【问题标题】:How to change JWT Token after adding new claim添加新声明后如何更改 JWT 令牌
【发布时间】:2020-11-26 22:28:19
【问题描述】:

我在下面有一个添加新声明的代码

    public ActionResult AddClaim()
    {
        try
        {
            var user = User;
            var userIdentity = user.Identities.First();
            userIdentity.AddClaim(new Claim("myCustomClaim", "value of claim"));

            return View("Secure");
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

使用 AddClaim() 函数成功添加了声明。

但是,当我解密 jwt.io 中的 id_token 时,我最近添加的声明未包含在有效负载中。我试过调用 HttpContext.SigninAsync() 但它什么也没做。

我的目标是在 JWT 令牌负载中添加自定义声明。我该怎么办?

【问题讨论】:

    标签: c# asp.net-mvc jwt token claims


    【解决方案1】:

    在授权期间将 jwt 反序列化为当前用户身份。您添加的任何声明都会添加到用户身份,但不会添加到 JWT。创建 JWT 是一个(通常)涉及签名的复杂过程,一旦您添加另一个声明,就需要从头开始完全重新生成。

    如果您不控制创建原始 JWT 的代码,则无法执行此操作。您可以使用用户身份声明创建自己的新 JWT,然后添加新的 JWT,但在大多数情况下,您不应向现有令牌添加声明 - 令牌通常来自权威服务器。

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 2018-11-03
      • 2023-02-03
      • 2020-01-23
      • 2017-02-13
      • 2019-06-24
      • 2016-12-23
      • 1970-01-01
      • 2019-10-06
      相关资源
      最近更新 更多