Nos*_*gUK 2 c# openid asp.net-core-mvc identityserver4
我使用IdentityServer4和OpenId来验证我的MVC应用程序中的用户,并希望添加我自己的声明.但我不确定哪个OpenIdConnectEvents我应该这样做.
本教程说我......
在身份验证流程中,您可能希望修改从IDP获得的声明.在ASP.NET Core 1.0中,您可以从OpenID Connect中间件在AuthenticationValidated事件中执行声明转换.
您在AuthenticationValidated期间添加的任何声明都存储在会话身份验证cookie中.
但是,此事件在ASP.NET Core 1.1中不可用
我试图在TokenValidated事件中做到这一点..
var principal = context.Request.HttpContext.User;
principal.Identities.First().AddClaim(new Claim("TenantId", user.TenantId.ToString()));
Run Code Online (Sandbox Code Playgroud)
但是当我在身份验证后列出用户声明时,它未列出.
@foreach (var claim in User.Claims)
{
<dt>@claim.Type</dt>
<dd>@claim.Value</dd>
}
Run Code Online (Sandbox Code Playgroud)
您使用该TokenValidated事件的方法似乎是正确的,但是您尝试添加声明的方式是错误的.
此时,在身份验证过程中,用户仍未进行身份验证.OpenID Connect中间件仍在整合所需的所有信息.然后,它会将此信息传递给Cookie中间件,该中间件将使用会话cookie实现身份验证.
我的观点是,此时不要使用context.Request.HttpContext.User,因为它不包含通过OIDC验证的用户.您可以添加声明context.Ticket.Principal.Identities.First().AddClaim,因为这是稍后将传递给Cookie中间件的标识.
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |