集成 AWS Cognito 和 Azure AD:允许任何 Microsoft 用户访问,即使他们不在 Azure AD 中?

问题描述 投票:0回答:1

好吧,我的目标是将 google 和 microsoft 与 aws cognito 集成,以允许用户使用他们的 google 和 microsoft 帐户进行注册/登录。谷歌的工作完美,但由于 AWS 本身没有 Microsoft 集成,所以我遵循了各种教程。

我最终在认知池中创建了一个 OpenID Connect (OIDC) 身份提供程序,并在 Azure 门户中创建了一个目录,我将以下内容映射到我创建的 OIDC

Application (client) ID

Client Secret

发行人网址:**
https://login.microsoftonline.com/{tenant}/v2.0
**
和范围
**
openid profile email

并将属性请求方法设置为post
**
在我的反应应用程序中,我使用:

await Auth.federatedSignIn({ provider: 'Microsoft' });

我在 azure 中的身份验证中的重定向网址是

https://{{我的认知池域}}/oauth2/idpresponse

现在这对于 azure AD 中存在的用户来说非常有效,它允许整个流程完成在 Cognito 中与外部提供商创建用户,但它不适用于任何其他 Microsoft 电子邮件,除了 azure AD 中的用户之外我得到了错误

AADSTS50020: User account '{{email}}' from identity provider 'live.com' does not exist in tenant '{{Azure app name}}' and cannot access the application '{{application id}} in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.

我想创建一些东西,允许每个 Microsoft 用户,即使他们不存在于 AD 中,也可以使用 microsoft 进行注册并使用我的 React 应用程序

我能做什么以及我做错了什么?有人可以帮我解决这个问题吗?

reactjs oauth-2.0 azure-active-directory amazon-cognito idp
1个回答
0
投票

AADSTS50020:来自身份提供商“live.com”的用户帐户“{{email}}”在租户“{{Azure 应用程序名称}}”中不存在,并且无法访问该租户中的应用程序“{{application id}}”。需要先将该帐户添加为租户中的外部用户。注销并使用不同的 Azure Active Directory 用户帐户重新登录。

如果未使用选项 “任何组织目录中的帐户(任何 Microsoft Entra ID 租户 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)”将 Microsoft Entra ID 应用程序配置为多租户,并且如果登录 URL 未设置为

common

enter image description here

因此要解决该错误,请确保注册 Azure AD 应用程序,如下所示:

enter image description here

enter image description here

并在清单中将

accessTokenAcceptedVersion
更新为 2。

基于此 MsDoc,颁发者 URL 必须设置为

<authentication-endpoint>/<tenant-id>/v2.0
,即对于 V2.0 端点,身份验证端点必须为
https://login.microsoftonline.com

对于支持多租户和 Microsoft 个人帐户的应用程序,issuer 必须设置为

https://login.microsoftonline.com/common/v2.0

参考:

具有多租户身份验证的 Azure Functions - Stephan 编码 (svrooij.io),作者:Stephan

© www.soinside.com 2019 - 2024. All rights reserved.