現在、ユーザーが 2 つの ThinkTecture IDP サーバー経由で接続できるようにする ASP.NET MVC アプリケーションがあります。MVC アプリはこれらの IDP サーバーの両方を信頼し、ユーザーを完全に認証します。
現在の設定では、web.configのセクションで< System.IdentityModel.Services.WSFederationAuthenticationModule >
と を使用してこれらを処理します。 < System.IdentityModel.Services.SessionAuthenticationModule >
< modules >
SAML v2 トークンを送信してユーザーを認証したい新しい関係者がいますが、MVC アプリはそれを認識していないようです。
IDP サーバー (SAML1) と新しいログイン サーバー (SAML2) の両方からの POST 応答を比較しましたが、微妙な違いがいくつかあり、それが問題を引き起こしている可能性があります。
IDP サーバーは、< trust:RequestedSecurityToken >
属性を使用してラップするよう< saml:Assertion >
です。一方、新しいクライアントは、次を含む POST 要求本文を送信します。< saml >< samlp:Response >
私の質問は次のとおりです。
1)< samlp:Response >
これは Microsoft WIF でサポートされていない新しい SAML2P バージョンですか? それとも< saml:Assertion >
要素に興味があるだけですか?
2) WIF は SAML トークンをどこで検索しますか? ポスト本体? 認証ヘッダー (ベアラー)?
3) 現在、ユーザーが認証されていない場合、ユーザーはローカル IDP サーバーにリダイレクトされ、ログインして SAML 応答が返され、それがピックアップされます。ただし、新しいクライアントは、SAML トークンを使用してページを表示する要求を渡すだけです (真のシングル サインオン)。この違いが問題を引き起こしているのだろうか。現在、ユーザーのローカル IDP へのリダイレクトを手動で処理しているため、新しいクライアントではこれをオフにしようとしました。
編集 多くの掘り下げた後...
SAML2 プロトコルは Microsoft WIF でサポートされておらず、今後もサポートされる可能性があります。
SAML2 プロトコル メッセージは、通常、HTTP POST の本文内のフォーム パラメータ (saml= < saml:Response>< など) です。私の場合、(saml=) の標準パラメータ形式を使用していませんでした。 HTTP POST 本文に直接インライン化されていました。