1

ログイン後に証明書利用者に値を返す方法はありますか? 例えばquerystring

バックグラウンド:

私たちがやりたいことは、ユーザーが行ったアクション (サインインや登録など) を依存者に通知して、依存者が適切な確認メッセージをユーザーに表示できるようにすることです。証明書利用者はサインアップ ページにリンクしている可能性がありますが、ユーザーはサインアップする代わりにサインインするため、証明書利用者は「ご参加いただきありがとうございます」という通知パネルを表示すべきではありません。

に追加しようとし&lastaction=signupましたreturnUrlが、フォームが Azure ACS を介して投稿されると失われます。

lastaction次の試みは、次のようにに追加しようとすることでしたwreply:

WSFederationMessage message;
WSFederationMessage.TryCreateFromUri(uri, out message);
var signinMessage = wsFederationMessage as SignInRequestMessage;
if (signinMessage != null)
{    
    signinMessage.Reply += "?lastaction=hello";
    ...

Fiddler では、ACS への次の POST がhttps://xxxxx.accesscontrol.windows.net/v2/wsfederation?lastaction=helloに投稿されていることがわかります が、lastaction は証明書利用者に渡されません。

4

1 に答える 1

2

関連する問題がありました。サインイン時にユーザーが使用した認証方法を RP に知らせたかったのです。名前空間で新しい「システム」クレームを作成し、そこに情報を入れることでこれを解決しました。

TokenService 実装の AddSecurityClaims メソッドで:

 claimsIdentity.AddClaim(
            new Claim(
                String.Format("{0}/{1}", WellKnownConfiguration.TokenService.ClaimsNamespace,
                    ClaimsAuthenticationMethods), ((int) userAuthenticationMethods)));

更新 Cookie の使用について考えているとおっしゃいました。その場合、私は次のようにします。Cookie の設定を実装し (登録ページなど)、その Cookie の値を返す「アクション」をもう 1 つ作成します。アプリが資格情報を含む POST 要求を取得すると、リターン URL を使用してその中継アクションへのリダイレクトを (すぐに) 実行します。そのアクションは、Cookie の値を追加し、元の RP を呼び出しますが、ビューを適切に表示するカスタム アクションです。

Cookie プロキシと考えてください。要約すると、プロセスは次のとおりです。

  1. ユーザーが RP にヒット、アクションには認証が必要
  2. RP は、WS-Federation に従ってユーザーを STS にリダイレクトします。
  3. STS はトークンを発行し、独自のドメインに Cookie を追加します
  4. RP は認証されたユーザーを取得し、STS Cookie リーダーにリダイレクトします
  5. STS は、ログインを適切に処理できる RP の 2 番目の画面にリダイレクトします。

全体として、あと 1 ホップですが、前述したように、おそらくユーザーが気付かない、または気にしないほど十分に高速です。

于 2014-04-11T12:28:42.447 に答える