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
.
我不知道这里出了什么问题。我正在尝试使用 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
.