【问题标题】:How can I see a custom claim that I've added to my user's access token from the User's Identity?如何从用户身份查看我添加到用户访问令牌的自定义声明?
【发布时间】:2021-04-20 00:57:22
【问题描述】:

我需要访问在身份验证后添加到用户的自定义声明

在我的身份验证服务器中,我将自定义声明添加到响应中,如下所示

public class MyProfileService : IProfileService
{
    public async Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        var claims = new List<Claim>();
        claims.Add(new Claim("MyNewClaim", "lol"));
        context.IssuedClaims = claims;

在我的调用客户端上,我可以看到我在 OnTokenResponseReceived 中检查的原始令牌在我解码时具有声明

.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    options.Events.OnTokenResponseReceived += ctxt =>
    {
        ctxt.TokenEndpointResponse.AccessToken // <-- has raw token that contains claim

调用客户端有一个中间件组件,它试图从用户的身份中读取声明:

    public async Task InvokeAsync(HttpContext context)
    {
        var claimsIdentity = (ClaimsIdentity)context.User.Identity;
        
        var hasNewClaim = claimsIdentity.HasClaim(c => c.Type == "MyNewClaim"); // always false

我遇到的问题是索赔永远不存在。

问题:
我需要做什么才能访问我的用户身份中的新声明?

【问题讨论】:

  • 您可能需要添加 ClaimAction 来映射您的自定义声明:leastprivilege.com/2017/11/15/…
  • 看起来可以,但不幸的是没有。
  • JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); 添加到Startup 中的`ConfigureServices` 怎么样?
  • 仍然没有成功。当我得到所有审查时,我将发布最终工作的内容。

标签: authentication oauth-2.0 access-token claims-based-identity jwt-auth


【解决方案1】:

解决方法是从令牌服务的 /UserInfo 端点检索补充数据。

.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    // stuff

    options.Events.OnUserInformationReceived += context =>
    {
        // get UserInfo data from the context
        var userInfo = JsonConvert.DeserializeObject<OpenIdConnectUserInfo>(context.User.RootElement.ToString());

        // do stuff with the newly acquired info.

        return Task.CompletedTask;
    };

    // go home and tell your kids you love them
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 2020-01-15
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2017-11-29
    • 2017-09-05
    相关资源
    最近更新 更多