智威汤逊令牌。错误 "AADSTS700027: Client assertion contains an invalid signature"
JWT token. Error "AADSTS700027: Client assertion contains an invalid signature"
我需要从 Azure Active Directory 获取 OAuth2 访问令牌。为此,我使用基于证书的方法。我已将 .crt 文件上传到 Azure AD 并从 Azure AD UI.
获取了证书指纹
现在我正在从 JWT.io 生成 JWT 令牌并使用邮递员进行尝试。但我总是收到以下错误:
“AADSTS700027:客户端断言包含无效签名。[原因 - 未找到密钥。,客户端使用的密钥指纹”
我不确定是什么原因造成的。在 JWT.io 中,我输入 public 证书(我在 Azure AD 上上传)的 Base64 编码指纹作为 x5t 参数。如上所述,我从 Azure 门户 UI 获得了这个指纹。
在 JWT.io 中,我在“验证签名”下输入 public (crt) 和私有(密钥)证书,可以看到签名已匹配。
如果有人对此有任何想法,请告诉我。
据我所知,这个错误通常是由于您没有正确编码指纹造成的。获取指纹后,请检查您的代码以确保它已正确进行 Base64 编码。
在 https://jwt.io/, you can refer to this and certificate credentials:
检查 JWT 令牌的格式
页眉
{
"alg": "RS256",
"typ": "JWT",
"x5t": "<Base64 Thumbprint>"
}
有效负载
{
"iss": "<clientid>",
"sub": "<clientid>",
"exp": 1570838377 (expiration time),
"jti": "<random unique identifier>",
"aud": "https://<token-endpoint>"
}
将您的私钥放入底部验证器,它将在“已编码”中签署您的 JWT window。
我找了一些案例供大家参考,希望对大家有所帮助:
https://community.dynamics.com/crm/f/microsoft-dynamics-crm-forum/320069/authentication-to-dynamics-365-using-azure-apps
和
https://github.com/AzureAD/passport-azure-ad/issues/453
我想与您分享的是,如果我使用新证书请求访问令牌,就在我通过 MS Graph (/addKey) 将新证书添加到我的 AAD 应用程序之后,我会收到完全相同的错误。如果我在不做任何更改的情况下立即重试,则成功。在第一次尝试之前我等待多长时间似乎并不重要,就像它需要在新证书准备好使用之前失败一次。如果我在 GUI 中上传证书,问题永远不会出现。
我知道这与您遇到的问题不同,但值得了解 AAD 还会针对什么给出此确切错误消息。
我需要从 Azure Active Directory 获取 OAuth2 访问令牌。为此,我使用基于证书的方法。我已将 .crt 文件上传到 Azure AD 并从 Azure AD UI.
获取了证书指纹现在我正在从 JWT.io 生成 JWT 令牌并使用邮递员进行尝试。但我总是收到以下错误: “AADSTS700027:客户端断言包含无效签名。[原因 - 未找到密钥。,客户端使用的密钥指纹”
我不确定是什么原因造成的。在 JWT.io 中,我输入 public 证书(我在 Azure AD 上上传)的 Base64 编码指纹作为 x5t 参数。如上所述,我从 Azure 门户 UI 获得了这个指纹。
在 JWT.io 中,我在“验证签名”下输入 public (crt) 和私有(密钥)证书,可以看到签名已匹配。
如果有人对此有任何想法,请告诉我。
据我所知,这个错误通常是由于您没有正确编码指纹造成的。获取指纹后,请检查您的代码以确保它已正确进行 Base64 编码。
在 https://jwt.io/, you can refer to this and certificate credentials:
检查 JWT 令牌的格式页眉
{
"alg": "RS256",
"typ": "JWT",
"x5t": "<Base64 Thumbprint>"
}
有效负载
{
"iss": "<clientid>",
"sub": "<clientid>",
"exp": 1570838377 (expiration time),
"jti": "<random unique identifier>",
"aud": "https://<token-endpoint>"
}
将您的私钥放入底部验证器,它将在“已编码”中签署您的 JWT window。
我找了一些案例供大家参考,希望对大家有所帮助: https://community.dynamics.com/crm/f/microsoft-dynamics-crm-forum/320069/authentication-to-dynamics-365-using-azure-apps 和 https://github.com/AzureAD/passport-azure-ad/issues/453
我想与您分享的是,如果我使用新证书请求访问令牌,就在我通过 MS Graph (/addKey) 将新证书添加到我的 AAD 应用程序之后,我会收到完全相同的错误。如果我在不做任何更改的情况下立即重试,则成功。在第一次尝试之前我等待多长时间似乎并不重要,就像它需要在新证书准备好使用之前失败一次。如果我在 GUI 中上传证书,问题永远不会出现。
我知道这与您遇到的问题不同,但值得了解 AAD 还会针对什么给出此确切错误消息。