1

認証に WSFederationAuthenticationModule を使用しています。ユーザーが認証されていない場合、それに応じて ADFS Web エージェントにリダイレクトされます。ADFS Cookie はアプリ セッションよりも長く存続するため、アプリケーションに直接ループバックされることがあります。

これが私が望むものであるほとんどの場合、ユーザーが何かをしようとすると、セッションが期限切れになった場合にリダイレクトされ、ユーザーが戻ってきます (再度ログインした後、または Cookie がまだ有効であることがわかった後)。彼らが望むことをすることができます。ただし、「ログアウト」をクリックしている場合は、ログアウトしてもらいたいです。しかし、モジュールはそれらを傍受して送り返しているため、セッションが復元されたら、もう一度「ログアウト」をクリックする必要があります。

ログアウトは MVC API コントローラ アクションです。アプリのクリーンアップもトリガーされるため、セキュリティの背後から取り出したいかどうかはわかりません(ログアウトをクリックしないと、これらのことが起こらない可能性があるため、これも問題であることに気づきましたが、は別の問題です)。

WSFederationAuthenticationModule と ADFS で何かが欠けているように感じます... ログアウト アクションを匿名/パブリック アクションにすることについて、何かが正しくないと感じています。WSFederationAuthenticationModule の意図では、これについていくつかの考慮事項が必要ですが、私はそれを突き止めることができないようです。

4

1 に答える 1

0

私が理解している限り、あなたの認証は Auth Cookie を介して保持されます。ログアウト アクションの下のアプリ コントローラーに次を追加してみてください。

     FederatedAuthentication.SessionAuthenticationModule.SignOut();
     return View("LogOut");

これにより、ログアウトされます。認証されていない人が「LogOut」ビューにアクセスできない場合、ログインのためにログインページにリダイレクトされます。もう1つ、上記の意味が、セッションの有効期限が切れた後、誰かがログアウトページにアクセスしようとすると(セッションはすでに期限切れになっていますが)、まず認証のためにログインモジュールにリダイレクトされます(認証を受ける必要があるため)ログアウトページへのアクセス)、次のようなことができます:

     if (User.Identity.IsAuthenticated)
         ...u'r logout logic goes here together with other clean-up...
     else
         ...u could choose to return a view which says he is already logged out

またはログインサービス側(制御している場合)で、リクエストの送信元を確認し、それに応じてアクションを実行します。

于 2014-02-28T15:20:58.160 に答える