微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

令牌验证后将索赔更新为委托人

如何解决令牌验证后将索赔更新为委托人

我有使用JWTBearerAuthentication的API。从身份验证角度来看,一切正常。但是,需要在验证完成后更新主体上的索赔。我必须获取一些信息,而不是从源(令牌)声明中接收信息。我在考虑是否有一种方法,可以在验证成功后将一些声明添加到现有声明标识/委托人中,以执行某些访问权限。以下是我的启动课程中的示例代码

pylint

解决方法

您可以通过多种方法在身份验证后修改声明:

一个选项是

 options.Events = new JwtBearerEvents()
    {
        OnTokenValidated = context =>
        {
            // Token has passed validation and a ClaimsIdentity has been generated.
            context.Principal.Identities.First().AddClaim(new Claim("VIPCustomer","YES"));
            return Task.CompletedTask;
        }
};

要启用更高级的索赔转换方案,我们可以添加一个自定义转换类

public class BonusLevelClaimTransformation : IClaimsTransformation
{
    public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
    {
        if (!principal.HasClaim(c => c.Type == "bonuslevel"))
        {
            //Lookup bonus level.....
            principal.Identities.First().AddClaim(new Claim("bonuslevel","12345"));
        }
        return Task.FromResult(principal);
    }
}

然后我们在Startup.cs中注册它:

services.AddTransient<IClaimsTransformation,BonusLevelClaimTransformation>();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。