好吧,我的目标是将 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
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 应用程序
我能做什么以及我做错了什么?有人可以帮我解决这个问题吗?
AADSTS50020:来自身份提供商“live.com”的用户帐户“{{email}}”在租户“{{Azure 应用程序名称}}”中不存在,并且无法访问该租户中的应用程序“{{application id}}”。需要先将该帐户添加为租户中的外部用户。注销并使用不同的 Azure Active Directory 用户帐户重新登录。
如果未使用选项 “任何组织目录中的帐户(任何 Microsoft Entra ID 租户 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)”将 Microsoft Entra ID 应用程序配置为多租户,并且如果登录 URL 未设置为
common
。
因此要解决该错误,请确保注册 Azure AD 应用程序,如下所示:
并在清单中将
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