【问题标题】:C# or VB validate JWT with a manually created JWKC# 或 VB 使用手动创建的 JWK 验证 JWT
【发布时间】:2019-03-28 01:17:42
【问题描述】:

因为我得到“IDX10511:签名验证失败。密钥尝试...”当我尝试按照下面的验证时,我发疯了。我已经尝试了一个直接的 JsonWebKey 并转换为 RSA 并产生相同的错误。在 javascript 中手动验证令牌和 JWK。:

Private Sub ValidateTokenAndSetIdentity(token As String)
    Dim TokenHandler As New JwtSecurityTokenHandler()
    Dim ValidationParameters As TokenValidationParameters = GetValidationParameters()
    Dim validToken As Microsoft.IdentityModel.Tokens.SecurityToken
    If TokenHandler.CanReadToken(token) Then
        Dim ValidKey As New JsonWebKeyConverter
        Dim Principal As ClaimsPrincipal = TokenHandler.ValidateToken(token, ValidationParameters, validToken)
        Thread.CurrentPrincipal = Principal
        HttpContext.Current.User = Principal
    End If
End Sub

Private Function GetValidationParameters() As TokenValidationParameters
    Dim SecurityKeys As List(Of Microsoft.IdentityModel.Tokens.SecurityKey) = GetSecurityKey()
    Dim TVP As New TokenValidationParameters With
        {
        .ClockSkew = TimeSpan.FromMinutes(5),
        .RequireSignedTokens = True,
        .RequireExpirationTime = True,
        .IssuerSigningKeys = SecurityKeys
    }
    Return TVP
End Function
Private Function GetSecurityKey() As List(Of Microsoft.IdentityModel.Tokens.SecurityKey)
    Dim Key As New JsonWebKey With {
    .Kid = "df255eb3e247cf83bac5a6227572f96e",
    .Kty = "RSA",
    .Alg = "RS256",
    .N = "LongValidStringHere",
    .E = "ShortValidString"
    }

    Dim Keys As New List(Of Microsoft.IdentityModel.Tokens.SecurityKey)
    Dim e As Byte() = Base64UrlEncoder.DecodeBytes(Key.E)
    Dim n = Base64UrlEncoder.DecodeBytes(Key.N)

    Dim FullKey As New Microsoft.IdentityModel.Tokens.RsaSecurityKey(New RSAParameters With {.Exponent = e, .Modulus = n}) With
        {
        .KeyId = Key.Kid
        }
    Keys.Add(FullKey)
    Return Keys
End Function

【问题讨论】:

    标签: .net jwt jwk


    【解决方案1】:

    在我的例子中,错误是由 JWT 的 aud 字段中的无效值引起的。确保它与有效受众相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-09
      • 2020-11-27
      • 2017-09-01
      • 1970-01-01
      • 2018-07-27
      • 2021-06-25
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多