【发布时间】:2022-01-18 21:17:40
【问题描述】:
安全性是其中之一,一旦您设置了它,您就会忘记它,直到某些东西不起作用。我有一个使用 OpenId Connect 和 Azure 的 .Net Core 应用程序。登录工作正常,但几天前我们注意到注销无法正常工作。您可以退出应用程序,然后直接再次登录而无需输入凭据。所以,我环顾四周,发现清除cookie和会话还不够好,您需要转到“end_session_endpoint”才能真正清除凭据。我已经查看了很多地方,但是我找不到一个简单的代码示例来说明如何做到这一点。而且我尝试过的代码示例似乎不起作用。当我在本地运行时,我可以注销并说它已将我注销,但是当我再次启动应用程序时,我会立即自动登录。我理解这个概念,我只是不知道该怎么做。下面是我的身份验证在 Startup.cs 文件中的样子:
services.AddAuthentication(options =>
{
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.Authority = Configuration["Authentication:Microsoft:OAuth"];
options.RequireHttpsMetadata = true;
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.UsePkce = false;
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("email");
options.SaveTokens = true;
options.CallbackPath = new PathString(Configuration["Authentication:Microsoft:Callback"]);
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
};
// MetadataAddress represents the Active Directory instance used to authenticate users.
options.MetadataAddress = Configuration["Authentication:Microsoft:Meta"];
options.ClientId = Configuration["Authentication:Microsoft:ApplicationId"];
options.ClientSecret = Configuration["Authentication:Microsoft:Password"];
});
有人有这方面的直接代码示例吗?
【问题讨论】:
-
这应该不难弄清楚,但我仍然找不到一个简单的代码示例。我看过很多文档,以及很多实际上不起作用的示例,因为它们是针对产品的。
标签: c# openid-connect openid logout