怎么使用OpenID Connect为构建在Azure上的应用提供基于Cognito User Pool的SSO

0

【以下的问题经过翻译处理】 你好,我们尝试在Cognito User Pool中实现Azure Active Directory SSO(Microsoft登录),使用OpenID Connect通过https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-provider.html#cognito-user-pools-oidc-providers 上提供的指南。

我们执行的步骤:

我们创建了一个Azure应用程序(https://portal.azure.com),并通过提供以下OIDC详细信息将其链接到Cognito User Pool。

1. Issuer: https://login.microsoftonline.com/common/v2.0
2. Client ID: Client ID of the Azure Application
3. Attributes request method : GET
4. Authorize scope: openid email
5. Client Secret: Client Secret of the Azure Application.

一旦我们创建了OIDC,我们在应用程序客户端设置中启用它,并匹配了相关属性,例如在Attributes Mapping部分的电子邮件。

在我们的Azure应用中,我们提供了以下设置:

redirect URI: https://{{Cognito_Hosted_UI_Domain}}/oauth2/idpresponse

现在在Cognito Hosted UI上,尝试登录时,我们能够看到Microsoft登录oAuth Popup,但是一旦我们登录,我们就会被重定向回我们的回调URL,并在回调URL上看到错误消息。

https://{{callback_url_domain}}/cb?error_description=Microsoft+Error+-+401+error+getting+token&error=invalid_request

我们检查了Azure Portal登录选项卡,我们可以看到我们的登录已成功。 所以我们认为这是来自Cognito方面的问题。

如果我们在这个问题上能得到一些指导,那将会很有帮助。


更新:

401错误的原因是我传递了客户端credit ID而不是客户端credit值。 这导致了以下新的错误 https://<CallBackURL>/cb?error_description=Bad+id_token+issuer+https%3A%2F%2Flogin.microsoftonline.com%2F<AzureADTenanatID>%2Fv2.0&error=invalid_request

profile picture
專家
已提問 6 個月前檢視次數 31 次
1 個回答
0

【以下的回答经过翻译处理】 你需要使用特定的Azure AD租户issuer,而不是使用"common"端点。因为"common"端点目前不被支持,从Azure AD返回的令牌中的issuer必须与Cognito中定义的issuer完全匹配。

这篇博客文章可能会有所帮助。如果你在使用特定租户issuer后仍然遇到错误,请打开支持工单,我们的支持工程师将帮助您排查设置问题。

对于多租户相关的场景,以下文档中的最佳实践的介绍也许对你会有所帮助。 https://docs.aws.amazon.com/cognito/latest/developerguide/multi-tenant-application-best-practices.html

profile picture
專家
已回答 6 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南