IDX10634:无法创建 SignatureProvider

IDX10634: Unable to create the SignatureProvider

我不知道这里出了什么问题。我正在尝试使用 RS SHA256 创建 JWT。在 handler.WriteToken 我得到这个错误:

IDX10634:无法创建 SignatureProvider。 算法:'System.String',安全密钥:'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey' 不支持。支持的算法列表可在此处获得:https://aka.ms/IdentityModel/supported-algorithms

按照我的解释,它告诉我我正在指定一个不受支持的算法,但 SecurityAlgorithms.RsaSha256 解析为“RS256”。

如有任何指导,我们将不胜感激。下面是我的代码。

Imports System.Security.Cryptography
Imports Microsoft.IdentityModel.Tokens
Imports System.IdentityModel.Tokens.Jwt


Public Function GetJWT()
    Dim rsaPrivateKey As String = "MIIEvQI...small piece of key included here...J83wMcqFO4WXjrMXU="
    Dim rsaPrivateKeyBytes() As Byte = System.Text.Encoding.Default.GetBytes(Base64UrlEncode(rsaPrivateKey))
    Dim securityKey As Microsoft.IdentityModel.Tokens.SymmetricSecurityKey = New Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(rsaPrivateKeyBytes)
    Dim credentials As SigningCredentials = New Microsoft.IdentityModel.Tokens.SigningCredentials(securityKey, SecurityAlgorithms.RsaSha256)
    Dim header As JwtHeader = New JwtHeader(credentials)
    Dim payload As JwtPayload = New JwtPayload()
    payload.Item("test") = "this is a test"
    Dim secToken As JwtSecurityToken = New JwtSecurityToken(header, payload)
    Dim handler As JwtSecurityTokenHandler = New JwtSecurityTokenHandler()
    Dim tokenString As String = handler.WriteToken(secToken)
    Return tokenString

End Function
Public Function Base64UrlEncode(input As String) As String
    Dim inputBytes() As Byte = System.Text.Encoding.UTF8.GetBytes(input)
    Return Convert.ToBase64String(inputBytes).Replace("+", "-").Replace("/", "_").Replace("=", "")
End Function

根据您发布的link,RsaSha256 不是受支持的对称 算法。您需要尝试对称算法,例如 SecurityAlgorithms.HmacSha256.