C# 如何在C语言中生成RS256算法签名的JWT令牌#
我随身携带一个RSA私钥,我必须使用RS256算法生成一个JWT令牌。 我从下面为“HmacSha256”算法工作的代码开始 但当我将其更改为RS256时,它会抛出错误,如“IDX10634:无法创建SignatureProvider.Algorithm:'System.String',SecurityKey:'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey'” 之后,我用rsacryptserviceprovider()类修改了代码。但我没有找到解决办法。 请任何人都可以使用带有私钥的RSACryptServiceProvider类提供示例代码C# 如何在C语言中生成RS256算法签名的JWT令牌#,c#,.net,jwt,token,C#,.net,Jwt,Token,我随身携带一个RSA私钥,我必须使用RS256算法生成一个JWT令牌。 我从下面为“HmacSha256”算法工作的代码开始 但当我将其更改为RS256时,它会抛出错误,如“IDX10634:无法创建SignatureProvider.Algorithm:'System.String',SecurityKey:'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey'” 之后,我用rsacryptserviceprovider()类修改了代码。但我
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;
}
公共静态字符串CreateToken()//字典负载
{
string key=GetConfiguration[“privateKey”].Tostring();
var securityKey=
新的Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(
Encoding.UTF8.GetBytes(key));
变量凭据=
新的Microsoft.IdentityModel.Tokens.SigningCredentials(securityKey,“RS256”);
var header=新的JwtHeader(凭证);
JwtPayload payload=新的JwtPayload();
payload.AddClaim(
新系统。安全。索赔。索赔(
“上下文”、“{'user':{'name':'username','email':'email'}}”,
JsonClaimValueTypes.Json);
payload.AddClaim(新系统.安全.声明.声明(“iss”@“应用程序密钥”));
payload.AddClaim(newsystem.Security.Claims.Claims(“aud”,“meet.jitsi.com”);
payload.AddClaim(newsystem.Security.Claims.Claims(“sub”,“meet.jitsi.com”);
payload.AddClaim(新系统.安全.索赔.索赔(“房间”,“试验室”));
var secToken=新的JwtSecurityToken(头,有效负载);
var handler=新的JwtSecurityTokenHandler();
var tokenString=handler.WriteToken(secToken);
返回令牌字符串;
}
这是否回答了您的问题?我不清楚给出的答案。当我使用RSACryptoServiceProvider类时,我应该在哪里提供私钥?您能用一个示例代码解释一下吗?我正在尝试使用此代码生成RSA 256 jwt令牌。。请分享您的评论@Shibin。。。请耐心阅读这篇文章。。RS256是一种非对称算法,但您正在尝试使用SymmetricSecurityKey。首先,了解RS256与HS256之间的区别。