c# - 如何在 C# 中生成使用 RS256 算法签名的 JWT 令牌
问题描述
我有一个 RSA 私钥,我必须使用 RS256 算法生成一个 JWT 令牌。我从以下代码开始,该代码适用于“HmacSha256”算法,但是当我将其更改为 RS256 时,它会引发类似“IDX10634: Unable to create the SignatureProvider.Algorithm: 'System.String',SecurityKey:'Microsoft.IdentityModel.Tokens .SymmetricSecurityKey'"
之后,我使用 RSACryptoServiceProvider() 类修改了代码。但我没有得到解决方案。请任何人都可以帮助使用带有私钥的 RSACryptoServiceProvider 类的示例代码。
public static string CreateToken()//Dictionary<string, object> payload
{
string key = GetConfiguration["privateKey"].Tostring();
var securityKey =
new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(
Encoding.UTF8.GetBytes(key));
var credentials =
new Microsoft.IdentityModel.Tokens.SigningCredentials(securityKey, "RS256");
var header = new JwtHeader(credentials);
JwtPayload payload = new JwtPayload();
payload.AddClaim(
new System.Security.Claims.Claim(
"context", "{'user': { 'name': 'username', 'email': 'email' }}",
JsonClaimValueTypes.Json));
payload.AddClaim(new System.Security.Claims.Claim("iss", @"app-key"));
payload.AddClaim(new System.Security.Claims.Claim("aud", "meet.jitsi.com"));
payload.AddClaim(new System.Security.Claims.Claim("sub", "meet.jitsi.com"));
payload.AddClaim(new System.Security.Claims.Claim("room", "TestRoom"));
var secToken = new JwtSecurityToken(header, payload);
var handler = new JwtSecurityTokenHandler();
var tokenString = handler.WriteToken(secToken);
return tokenString;
}
解决方案
推荐阅读
- javascript - 初始化拖放项目中的项目数据
- php - 在 reactJs 中调用 axios 的问题
- java - SQLite MVVM在Activity中返回&获取rowId
- azure - ADLA 作为 Power BI 的来源
- mysql - 如何从 Ubuntu VM 访问在 windows localhost:3006 上运行的 Mysql 数据库
- vue.js - 如何在 Vue JS 中通过 attr 选择元素
- angular - 如何在 ngx-pinch-zoom 中使用两根手指进行缩放
- r - 有没有办法从 Monocle 中的伪时间图中检索坐标?
- security - 证书主题密钥标识符长度
- python - 如何将日期列添加到python中已经存在的时间列?