gpt4 book ai didi

c# - AspNetCore 1.1 中不存在 OpenIdConnectEvents 中的 AuthenticationValidated 事件,所以我应该在哪里添加声明客户端

转载 作者:行者123 更新时间:2023-11-30 19:24:01 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com