LP1*_*P13 4 asp.net-core-mvc coreclr identityserver3 asp.net-core
我有 asp.net core 应用程序,该应用程序正在使用 IdentityServer3 使用 OpenIdConnect 身份验证。当用户成功通过身份验证后,应用程序会从身份服务器收到正确的声明。我可以调试线路TokenValidatedContext.Ticket.Principal.Claims并OnTokenValidatd确保应用程序收到所有声明。
代码片段
var connectOptions = new OpenIdConnectOptions()
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
Authority = authority,
ClientId = clientId,
ResponseType = IdentityConstant.IdTokenClaim,
AuthenticationScheme = IdentityConstant.OpenIdAuthenticationScheme,
SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme,
PostLogoutRedirectUri = postlogoutRedirectUri,
CallbackPath = IdentityConstant.CallbackPath,
Events = new OpenIdConnectEvents()
{
OnTokenValidated = async context =>
{
var claims = context.Ticket.Principal.Claims;
await Task.FromResult(0);
}
}
};
Run Code Online (Sandbox Code Playgroud)
下面是处理程序 TokenValidatedContext.Ticket.Principal.Claims中的快速观看OnTokenValidated
但是,在家庭控制器中调试成功进行身份验证后User.Cliams,我看到所有声明都添加了两次。下面是Home控制器
的快速观看User.Claims
为什么声明在 User.Claims 中添加两次?
因为你将 openidconnect 设置AutomaticAuthenticate为 true 。如果您查看用户身份,您将看到有两种身份(一种用于 cookie,另一种用于 openidconnect 身份验证)。由于User.Claims是这些身份声明的总和,因此您会看到声明两次。因此,AutomaticAuthenticate = true,从 openidconnect 选项中删除可以解决问题。
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |