2012-05-29 89 views
6

私の要件は、asp.netでSAML2.0を使用してSSOを実装することです。 私は私の最後に2つのベンダーを持っています。第2のサイトにログインすることなく、あるサイトから別のサイトにユーザーを渡したい以前SAML2.0を使ったことはありません。 誰でも私に手伝ってもらうことができますか?asp.netでSAML2.0を使用するSSO

おかげで、 DIPA

答えて

6

は、私はあなたがSAMLベースの認証を扱う簡素化のWindowsアイデンティティ基盤のサブシステムを使用することを推奨します。

トピックは、MSからの自由のために、あなたは良いハンドブックを必要と幸い1があるかなり広いです。要するに

http://msdn.microsoft.com/en-us/library/ff423674.aspx

:そのうちの一つがすべき、2つのサーバー間のアイデンティティを渡すためにアイデンティティプロバイダサービス(セキュリティトークンサービス)を実装し、第2のものは最初のものによって作成され署名されたSAMLトークンを受け入れる必要があります。

+0

あなたの貴重なご意見をいただき、ありがとうございました。これを見てみましょう。 – dipa

+0

@Wiktor Zychlaこれはクールなリンクです – Ravia

21

まず、トークン形式でプロトコルを区別します。私はあなたがトークン形式ではなくプロトコルについて話していると仮定します。しかし、ここにその違いがあります:

  • SAML 2トークン形式。これは単に、あなたのアプリケーションが誤解しやすいトークンのフォーマットです。これは、そのままのWIFによってサポートされています。
  • SAML 2プロトコル。これは、アプリケーションでトークンを取得するためにアプリケーションが理解しなければならないHTTPのやりとりです。これはWIFによってサポートされていませんが、ダウンロード可能な拡張機能があります(http://connect.microsoft.com/site1168/Downloads/DownloadDetails.aspx?DownloadID=36088

一方、複数のIDプロバイダが存在するシナリオがあります。 Wiktorが提案した本(私が共著)は、このシナリオをFederated Identity with Multiple Partners chapterでより詳細に説明しています。アイデンティティ・フェデレーションの背後にある概念を理解するためには、この文書を読むことをお勧めします。記事の短いバージョンと実装の詳細を教えてください。これを解決する方法は2つあります。

  • アプリケーションレベルで実装します。 WIFでは、複数のIDプロバイダトークンを信頼できるようになります(これはX509証明書で行われます)。次に、URL(例えば、https://idp1.yourapp.comまたはhttps://yourapp.com/idp1)またはユーザーが選択した(2つのリンクを持つホームページを持つことによって、アイデンティティの証明者ごとに1つ)に応じて、各アイデンティティプロバイダのサインイン要求を生成する必要があります。これらのアイデンティティプロバイダーからのクレームを正規化する必要があります(そのうちの1つがあなたに「名前」クレームを送り、もう1つは「upn」クレーム)。

    YourApp --> Identity Provider 1 
         \-> Identity Provider 2 
    
  • 「フェデレーションプロバイダ」と呼ばれるものを使用します。これは、アプリケーションにトークンを発行する別のサーバーであり、IDプロバイダーとの信頼関係を持ちます。アプリケーションで2つのIDプロバイダを信頼する代わりに、フェデレーションプロバイダのみを信頼すれば、フィードプロバイダはIDプロバイダを信頼します。それは信頼の連鎖です。

    YourApp --> Federation Provider --> Identity Provider 1 
               \-> Identity Provider 2 
    

このアーキテクチャは、あなたすることができます:

  • は、あなたが2回目以降のアプリケーションを持っている場合、あなただけの最初の1
  • の実装をコピーし、アプリケーション
  • に触れることなく、あなたのアイデンティティプロバイダを育てます
  • あなたはシングルサインオンを無料で受ける
  • あなたはクレーム変換エンジン(ifあなたは欠点があなたということですもちろん

)あなたはADFSのようなものを使用する場合は、代わりに、下記の拡張子の付いた手でそれを実装することの中に組み込まれてSAML 2プロトコルを(取得ADFSのようなもの)

  • を使用します今すぐ他に何かがあります(ADFSサーバー)。

  • +0

    このような素晴らしい要約です。ありがとうございました。それに凝縮されているのを見つけるのは驚くほど困難でした。 –

    3

    ComponentSpaceの使用をお勧めします。 SAML 2.0トークンとSAML 2.0プロトコルのすべてのユースケースに対応するライブラリを提供します。 WIFは現在、CTP以外のSAML 2.0プロトコルおよびトークン形式のサポートを提供していません。

    +1

    .Net 4.0はSAML 2.0をサポートしています – Ravia

    +0

    @Ravia - 利用可能であることを示すリンクを提供できますか?私の知る限り、このリンクを見る - http://connect.microsoft.com/site116​​8/Downloads/DownloadDetails.aspx?DownloadID=36088 RTMではなくCTPリリースです。 – kshbondili

    +0

    あなたは正しいです、私の間違いは答えに投票しました。 – Ravia

    4

    私たちは、ASP.NETアプリケーションで使用するための非常にシンプルなオープンソースのC#コンポーネントを書いた:https://github.com/jitbit/AspNetSaml(コードサンプルが含まれています)

    それは非常に短く、基本的なものですが、それが目標でした。巨大なサードパーティのパッケージを追加するのではなく、ちょうど1つの短いC#ファイルをプロジェクトに投げれば、あなたはSAML対応です。この事は、.NET 3.xでも、私たちのために働いています

    [免責事項]私は貢献者の1人です。

    PS。フォークと貢献は大歓迎です。

    関連する問題