【发布时间】:2020-12-13 12:53:07
【问题描述】:
我不知道这里出了什么问题。我正在尝试使用 RS SHA256 创建 JWT。在 handler.WriteToken 我得到这个错误:
IDX10634:无法创建 SignatureProvider。 算法:'System.String',SecurityKey:'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
【问题讨论】:
标签: vb.net cryptography jwt rsa