Amazon Cognito 的 JWK 不包含 X5c 字段

我正在尝试将我的 GO Web 服务器连接到 Amazon Cognito 进行身份验证。我正在使用大猩猩的 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 .{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json获取您的 JWKs 文件


我这样做了,但我的文件缺少 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"

    }]

}

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


谢谢您的帮助!


慕码人8056858
浏览 96回答 2
2回答

DIEA

您需要将密钥PEM转换为与任何 OpenSSL 或加密库一起使用的格式。在 javascript 中,我使用了 node.js 的jwk-to-pem包。它从不使用x5c道具,它使用nJWK 上的道具,其中包含 RSA 公钥的值。

catspeake

您的示例中使用的 JWT 中间件“github.com/auth0/go-jwt-middleware”深深植根于 auth.com 服务如何处理 JWT,可能并不完全适用于其他提供商和服务。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go