- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 IdentityServer4 和 OpenId 对我的 MVC 应用程序中的用户进行身份验证,并想添加我自己的声明。但我不确定我应该在哪个 OpenIdConnectEvents 中执行此操作。
这tutorial我说...
During the authentication flow, you might want to modify the claims that you get from the IDP. In ASP.NET Core 1.0, you can perform claims transformation inside of the AuthenticationValidated event from the OpenID Connect middleware.
Any claims that you add during AuthenticationValidated are stored in the session authentication cookie.
但是这个事件在 ASP.NET Core 1.1 中不可用
我已经尝试在 TokenValidated 事件中做到这一点..
var principal = context.Request.HttpContext.User;
principal.Identities.First().AddClaim(new Claim("TenantId", user.TenantId.ToString()));
但是当我在身份验证后列出用户声明时,它没有列出。
@foreach (var claim in User.Claims)
{
<dt>@claim.Type</dt>
<dd>@claim.Value</dd>
}
最佳答案
您使用 TokenValidated
事件的方法似乎是正确的,但是您尝试添加声明的方式是错误的。
此时在身份验证过程中,用户仍未通过身份验证。 OpenID Connect 中间件仍在将它需要的所有信息放在一起。然后它将此信息传递给 Cookies 中间件,中间件将使用 session cookie 实现身份验证。
我的观点是,此时不要使用 context.Request.HttpContext.User
,因为它不包含通过 OIDC 验证的用户。您可以使用 context.Ticket.Principal.Identities.First().AddClaim
添加声明,因为这是稍后将传递给 Cookies 中间件的身份。
关于c# - AspNetCore 1.1 中不存在 OpenIdConnectEvents 中的 AuthenticationValidated 事件,所以我应该在哪里添加声明客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41452710/
我在我的 Dotnet 核心 Web 应用程序中使用 Azure AD 登录,它应该触发 OnAuthorizationCodeReceived 事件,但它没有被触发。 能否请您说明一下? publ
使用 asp.net core 2.2,我在下面的启动中有以下内容我到达 OnRedirectToIdentityProvider 断点,然后我到达 appsettings "CallbackPath
我正在使用 IdentityServer4 和 OpenId 对我的 MVC 应用程序中的用户进行身份验证,并想添加我自己的声明。但我不确定我应该在哪个 OpenIdConnectEvents 中执行
我是一名优秀的程序员,十分优秀!