go - Amazon Cognito 的 JWK 不包含 X5c 字段

标签 go authentication jwt amazon-cognito

我正在尝试将我的 GO Web 服务器连接到 Amazon Cognito 进行身份验证。我正在使用 gorilla 的 jwt 中间件。我也在遵循 AuthO 的指南:https://auth0.com/docs/quickstart/backend/golang/01-authorization

该指南使用以下内容创建证书:

    for k, _ := range jwks.Keys {
        if token.Header["kid"] == jwks.Keys[k].Kid {
            cert = "-----BEGIN CERTIFICATE-----\n" + jwks.Keys[k].X5c[0] + "\n-----END CERTIFICATE-----"
        }
    }

AWS 说使用 https://cognito-idp 获取您的 JWKs 文件.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json

我这样做了,但我的文件缺少 X5c 字段。看起来像:
{
    "keys": [{
        "alg": "RS256",
        "e": "AQAB",
        "kid": "abcdefghijklmnopqrsexample=",
        "kty": "RSA",
        "n": "lsjhglskjhgslkjgh43lj5h34lkjh34lkjht3example",
        "use": "sig"
    }, {
        "alg":
        "RS256",
        "e": "AQAB",
        "kid": "fgjhlkhjlkhexample=",
        "kty": "RSA",
        "n": "sgjhlk6jp98ugp98up34hpexample",
        "use": "sig"
    }]
}

我应该如何验证通过客户端使用此文件发送的授权 header 发送的 token 的签名?

感谢您的帮助!

最佳答案

检查此线程 How to verify a JWT Token from AWS Cognito in Go?
您的示例中使用的 JWT 中间件“github.com/auth0/go-jwt-middleware”深深 Root 于 auth.com 服务如何处理 JWT,可能并不完全适用于其他提供商和服务。

关于go - Amazon Cognito 的 JWK 不包含 X5c 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61298189/

相关文章:

php - 到处注销,我在其他地方登录过

authentication - JWT 为什么我们需要承载字?

python - 如何验证 MS Azure AD 生成的 JWT id_token?

mongodb - 如何表示具有混合类型的数组

戈朗 : index efficiency of array

go - 无法传播数组以作为多个参数传递

c# - ASP.NET MVC 5 和 WebApi 2 身份验证

c# - 无法获取证书消息凭据以在我的 WCF 服务中工作

python - 在哪里覆盖 JWT_EXPIRATION_DELTA 以设置自定义 token 过期时间?

go - 如何在 Go 模板中访问数组第一个索引的值