2

私はこのシナリオを持っています。

  1. 2へのパッシブフェデレーションを使用したRP。
  2. ユーザー/パスワード認証用のカスタムSTS

    すべてが正常に機能しています。これまでのところ、ユーザーはログインリンクを押すと、制限された領域に移動するため、フェデレーションセキュリティがトリガーされ、ログイン画面が表示されました。それは彼に資格情報を書くように促し、要求はそれから処理されました、等々。

    ここで、同じページ(デフォルトページ)にログイン(ユーザー/パスワード)テキストボックスを作成する必要があります。ログインページにリダイレクトせずにフェデレーションサインイン操作を実行するにはどうすればよいですか?FederatedPassiveSignInコントロールを使用する必要がありますか(または使用できますか)?もしそうなら、どのように?

4

2 に答える 2

1

IsAutheticatedがfalseの場合、保護されていないランディングページにログインボックスを表示し、暗号化されたクレデンシャルなどを使用してカスタムSTSログインページにメッセージを送信し、バックグラウンドでログインしてアプリにリダイレクトすることができます。通常の方法でトークンを使用します。

ただし、ユーザーが認証されておらず、ランディングページの後ろのページをブックマークしている場合、ユーザーはSTSにリダイレクトされます。

于 2012-11-21T19:09:35.623 に答える
0

興味のある人(誰かが実際にそうだとは思わない)のために、私はログインページが何をするかをシミュレートすることによってそれを解決しました-基本的に-。

// makes credentials validation, and creates IClaimsPrincipal with the acquired claims
IClaimsPrincipal principal = LoginHelper.SignIn(editEmail.Value, editPassword.Value);

// retrieves the instance of the STS (in this case my custom STS)
TrustedSecurityTokenService service = (TrustedSecurityTokenService) TrustedSecurityTokenServiceConfiguration.Current.CreateSecurityTokenService();

// creates the request manually to point to my original page (or whatever page you desire)
SignInRequestMessage request = FederatedAuthentication.WSFederationAuthenticationModule.CreateSignInRequest(Guid.NewGuid().ToString(), "http://page/i/want/to/go/after/the/validation.aspx", true);

// processes first the request...
SignInResponseMessage response = FederatedPassiveSecurityTokenServiceOperations.ProcessSignInRequest(request, principal, service);

// ...then the response is processed, and redirected to URL above
FederatedPassiveSecurityTokenServiceOperations.ProcessSignInResponse(response, Response);

これによりCookieが作成され、プリンシパルはIsAuthenticatedではありません。ログインページで処理されたかのように(少なくとも期待どおりに機能しているようです)。

于 2012-11-22T17:27:42.193 に答える