C# 如何在C语言中生成RS256算法签名的JWT令牌#

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()类修改了代码。但我

我随身携带一个RSA私钥,我必须使用RS256算法生成一个JWT令牌。 我从下面为“HmacSha256”算法工作的代码开始 但当我将其更改为RS256时,它会抛出错误,如“IDX10634:无法创建SignatureProvider.Algorithm:'System.String',SecurityKey:'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey'”

之后,我用rsacryptserviceprovider()类修改了代码。但我没有找到解决办法。 请任何人都可以使用带有私钥的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之间的区别。