我可以在 AWS IAM 上注册具有多个证书的 IDP吗

Can I register an IDP with multiple certificates on AWS IAM

我有的是:

我做了什么:

问题:

我尝试在令牌中设置 "kid" 声明,每个令牌都带有相应的证书子项,但没有成功:(。

注:

我的证书端点示例:

{  
    "keys": [
        {
            "kid": "kid",
            "kty": "kty",
            "use": "use",
            "alg": "alg",
            "n": "nValue",
            "e": "eValue",
            "x5c": [
               "cert1"
            ],
            "x5t": "x5t=",
            "x5t#S256": "x5t#S256"
        },
        {
            "kid": "kid1",
            "kty": "kty",
            "use": "use",
            "alg": "alg",
            "n": "nValue",
            "e": "eValue",
            "x5c": [
                "cert2"
            ],
            "x5t": "x5t=",
            "x5t#S256": "x5t#S256"
        }
    ]
}

所以问题是我试图将孩子设置在 JWT 的 "claims" 中。

然而事实证明,为了让 AWS 区分这个 JWT 是用这个密钥签名的(来自 jwks 响应),它检查了 JWT 的 headers。如果在 header 中找到孩子,则它会在 jwk 响应中查找具有相应孩子的证书。

所以为了解决这个问题,我只需要在 JWT 的 "headers" 中设置孩子。

所以如果你在 java :

public String buildToken(Key key) {
    Map<String, Object> claims = new HashMap();
    Map<String, Object> headers = new HashMap();

    claims.put(claimName, someClaim);
    ...
    headers.put(KID, KID_OF_THIS_TOKENS_CERTIFICATE);
    ...
    return Jwts.builder().setClaims(claims).setHeader(headers).signWith(SignatureAlgorithm.RS256, key).compact();
}