我正在尝试将我的 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/