【发布时间】:2016-10-06 05:25:51
【问题描述】:
我有 asp.net 核心应用程序,该应用程序使用 IdentityServer3 使用 OpenIdConnect 身份验证。当用户成功通过身份验证时,应用程序会收到来自身份服务器的正确声明。我可以调试OnTokenValidatd 中的TokenValidatedContext.Ticket.Principal.Claims 行,并确保应用程序收到所有声明。
代码片段
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);
}
}
};
下面是TokenValidatedContext.Ticket.Principal.Claims在OnTokenValidated处理程序中的快速观看
但是,当我在 Home 控制器中调试 User.Cliams 时成功验证后,我看到所有声明都添加了两次。
以下是 Home 控制器中User.Claims 的快速观看
为什么声明会在 User.Claims 中添加两次?
【问题讨论】:
-
我不知道您是如何看到声明重复的...
标签: asp.net-core asp.net-core-mvc identityserver3 coreclr