注意私は .Net Core を使用していません。顧客に応じて、Azure AD または ADFS のいずれかを使用してセキュリティで保護された ASP.Net MVC アプリがあります。管理やドキュメントの作成を行うための他のいくつかの個別の MVC アプリと、管理設定を管理するための従来の ASP.Net アプリがあります。クレームベースの OpenID 接続を使用したシングル サインオンは正常に動作しています。ただし、メイン アプリからサインアウトしても、他のタブで開いている他のアプリを更新したり使用したりできます。また、他のタブを開いて、それらのアプリに直接アクセスすることもできます。
メイン アプリのログアウト ボタンが押されると、コードは他のアプリのログアウト URL を呼び出そうとします。最初の MVC アプリ (App_A) が実行されます。
Session?.Abandon();
Request.GetOwinContext().Authentication.SignOut();
これは正常に実行されますが、次の Asp.NET アプリ (App_B) が同じことを実行しようとすると、CORS エラーが発生し、呼び出しが失敗します。App_A にはアクセスできなくなりましたが、App_B には引き続きアクセスできます。App_A の Signout() 呼び出しを削除すると、App_B のログアウトは正常に実行されますが、ログアウト後に両方のアプリにアクセスできますが、メイン アプリにはアクセスできません。私はやって実験しました
- Session.Abandon()、
- すべての Cookie を消去するか、期限切れとして設定します。
- SessionAuthenticationModule.DeleteSessionCookie()、
- 利用可能なすべての DefaultAuthenticationTypes で SignOut() を呼び出し、
- それが私を許すであろうそれらの主張を取り除こうとしました。
私が成功したのは、しばらくアイドル状態にしたときだけで、突然すべてのアプリが認証を要求したときです。iisreset で複製できないため、セッションに関連していないことはわかっているため、Cookie の有効期限が切れている必要がありますが、確かなことはわかりません。ログアウトすると Cookie は消えますが、メイン以外のアプリにアクセスしようとするとすぐに戻ってきます。また、アプリのいずれかに最初にアクセスせずにログアウト URL を呼び出すと、何らかの理由で要求をブロックする CORS エラーが発生します。
OpenID Connect (SAML ではない) を使用して複数のサイト ( Core ではなく、Asp.NET および Asp.NET MVC) からサインアウトする方法に関するガイドまたはガイダンスを探しています。