0

ACSおよびカスタムSTSプロバイダーに対してRP1およびRP2アプリケーションからユーザーを認証したい。ユーザーがどのアプリケーションRP1またはRP2から来たのかを知る必要があります。それは可能ですか、そしてそれをどのように行うのですか?

ACSを使わなくても簡単だと思いますが、ACSでどうやってやるのか。

4

1 に答える 1

1

フェデレーションチェーンでは、STSは理論的にはネイバーのみを認識します(この場合、IdPはACSのみを認識します)。したがって、これを行うことはできません。これを行うために公式にサポートされている唯一の方法は、ACSの2つの異なる論理IDプロバイダー( http://myidp.com/rp1http://myidp.com/rp2など)として同じ物理STSを登録することです。

ただし、実際には、この方法は公式にはサポートされていませんが、別の方法で行うことができます。以下は、カスタムIdPにWS-Federationを使用していることを前提としていますが、他のプロトコルでも同様のことができます。ACSは、WS-Federation応答のパラメーターでBase64UrlEncodingを使用してエンコードされた、レルムアドレスと応答アドレスを含む元の要求からのすべてのデータをエンコードします。wctx次の方法でコンテキストをデコードできます。

SignInRequestMessage message = WSFederationMessage.CreateFromUri(Request.Url); 

byte[] bytes = HttpServerUtility.UrlTokenDecode(message.Context);

string decodedContext = UTF8Encoding.UTF8.GetString(bytes);

これにより、名前と値のペアのセットが得られます。そのうちの2つはrm=<realm>&ry=<reply>、元のRPのレルムと応答アドレスになります。

ただし、前述したように、これは公式にはサポートされておらず、このコンテキスト文字列の形式は将来変更される可能性があることに注意してください。

于 2013-02-20T19:31:31.550 に答える