2017-02-28 18 views
0

私は晴れやかな広告から私のwebappをサインアウトするのが好きです。私はこのサンプルhttps://www.janaks.com.np/azure-ad-identity-provider-in-aspnet-core-application/で示唆したように次のように試しました。Azure AD Sign Out

Startup.csで、次のような構成により
if (HttpContext.User.Identity.IsAuthenticated) 
{ 
    await HttpContext.Authentication.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme); 
    await HttpContext.Authentication.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); 
} 

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions 
{ 
    AuthenticationScheme = settings.SignInPolicyId, 
    AutomaticChallenge = true, 
    CallbackPath = settings.SignInCallbackPath, 
    ClientId = settings.ClientId, 
    MetadataAddress = string.Format(settings.AadInstance, settings.Tenant, settings.SignInPolicyId), 
    PostLogoutRedirectUri = settings.RedirectUri, 
    TokenValidationParameters = new TokenValidationParameters 
    { 
     NameClaimType = "name" 
    }, 
    AutomaticAuthenticate = true, 
    Scope = { "openid" }, 
    ResponseType = "id_token", 
    GetClaimsFromUserInfoEndpoint = true 
}); 

しかし、私は例外以下のWebアプリケーションからサインアウトしようとするとスローされます:あなたの助けを

InvalidOperationException: No authentication handler is configured to handle the scheme: OpenIdConnect 

感謝を。あなたが何らかの形でこのコントローラにポリシーIDを取得し、適切なミドルウェアを識別するためにそれを使用する必要があります

if (HttpContext.User.Identity.IsAuthenticated) 
{ 
    await HttpContext.Authentication.SignOutAsync(settings.SignInPolicyId); 
    await HttpContext.Authentication.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); 
} 

答えて

2

は、あなたが設定した認証スキームを特定する必要があります。

0

承認された回答はAuth 1には適していますが、Auth 2ではそのメソッドが償却されているので、拡張メソッドを使用してください。

await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); 

参考:https://github.com/aspnet/Announcements/issues/232