使用身份服务器时如何注销?

时间:2019-04-03 09:04:00

标签: c# asp.net-core identityserver4

请查看代码vlow,该代码来自MVC应用程序中的Startup.cs。

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

            services.AddCustomMvc(Configuration)
                .AddHttpClientServices(Configuration);

            services.AddAuthentication(options =>
            {
                options.DefaultScheme = "Cookies";
                options.DefaultChallengeScheme = "oidc";
            })
                .AddCookie("Cookies")
                .AddOpenIdConnect("oidc", options =>
                {
                    options.SignInScheme = "Cookies";

                    options.Authority = "http://localhost:5000"; 
                    options.RequireHttpsMetadata = false;

                    options.ClientId = "mvc2";
                    options.ClientSecret = "secret";
                    options.ResponseType = "code id_token";

                    options.SaveTokens = true;
                    options.GetClaimsFromUserInfoEndpoint = true;

                    options.Scope.Add("MyAPI1");
                    options.Scope.Add("MyAPI2");
                    options.Scope.Add("offline_access");
                });

        }

身份验证和授权在MyAPI1和myAPI2中正常工作,但是我无法注销。我已经尝试过了:

await HttpContext.SignOutAsync("Cookies");

这:

await HttpContext.SignOutAsync();

用户未注销。用户如何注销?

1 个答案:

答案 0 :(得分:0)

您可以将以下代码添加到某个控制器以触发注销:

public IActionResult Logout()
{
    return SignOut("Cookies", "oidc");
}

这将清除本地cookie,然后重定向到IdentityServer。 IdentityServer将清除其cookie,然后为用户提供一个链接以返回到MVC应用程序。还记得在IDS的客户端配置中设置PostLogoutRedirectUris