如何在Angular中解码JWE令牌

c#

我有这个问题,我通过这种方式使用 EncryptingCredentials 在 .net 核心中创建了一个 JWE:

var key = Encoding.ASCII.GetBytes(Configuration["Core:JwtSecret"]);
var encryptionkey = Encoding.ASCII.GetBytes(Configuration["Core:JwtEncrype"]);

var tokenDescriptor = new SecurityTokenDescriptor
{
    Subject = subject,
    Expires = DateTime.UtcNow.AddDays(Convert.ToInt32(Host.Config["Core:JwtDays"])),
    SigningCredentials =
        new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
    EncryptingCredentials =
        new EncryptingCredentials(new SymmetricSecurityKey(encryptionkey), SecurityAlgorithms.Aes128KW, SecurityAlgorithms.Aes128CbcHmacSha256)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
user.Token = tokenHandler.WriteToken(token);

如何使用 angular 读取令牌的数据?

回答

您可以实现一个 Web API 端点,该端点将接受您的 JWE 令牌作为输入参数,对其进行解密和验证,并将其有效负载(内容)作为 JSON 返回。然后,您可以在 Angular 应用程序中轻松使用 JSON。在这种情况下,您在服务器端使用您的签名和加密密钥,您将它们保密。

此外,您可以考虑使用 JWT 代替 JWE。在任何情况下,您都可以在公共客户端(角度应用程序)中解码令牌。这类似于 OpenID Connect 协议的 user_info 端点。如果您在服务器端(私人客户端)解密令牌,加密将非常有用。

在 angular 应用程序中使用签名和加密密钥会将它们公开给公众。

或者,您可以引入另一个未加密的 JWT 令牌,并将其返回到您的 angular 应用程序,而不是您的 JWE 令牌,或者除了您的 JWE 令牌之外。它将类似于来自 OpenID Connect 协议的 id_token。


以上是如何在Angular中解码JWE令牌的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>