Azure B2C 与 AWS Cognito 联合身份集成

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

我正在将 Azure B2C 与 AWS 集成,即将 AWS Cognito 与 Azure B2C 设置为联合身份提供商,并将其用于移动应用程序的登录目的。

在大多数情况下,我相信我已经正确配置了所有内容。这就是我到目前为止所做的

  1. 我创建了一个 B2C 租户,并在租户中设置了一个“应用程序”以及 SignUpAndSignInPolicy。该应用程序同时启用了本机和 Web 客户端,并且还允许隐式流。
  2. 我已将 Azure B2C 租户配置为 AWS 中的身份提供商,并为 IdP 创建了必要的角色。
  3. 我已经创建了一个 AWS Cognito 身份池并将其配置为使用上述 IdP
  4. 我正在使用 MSAL 库通过 Azure B2C 进行身份验证,特别是
    MSALPublicClientApplication.init(clientId, kAuthority)
    方法,后跟
    acquireToken
  5. 这会在浏览器中呈现交互式登录,并通过自定义 URL 将令牌返回到应用程序。令牌有效,我已使用 JWT 工具验证了它。
  6. 然后,我使用步骤 3 中创建的 Cognito 身份池和自定义的 IdentityProviderManager 设置一个
    AWSCognitoCredentialsProvider
    ,该类是我根据 AWS 文档实现了 getToken 和登录方法的类。
  7. 然后,我通过登录方法中的“return AWSTask(["providerName: "id_token"]”语句将步骤 5 中的令牌传递给 Cognito。

经过大量来回,我已经成功克服了一路上的大部分障碍,但是我现在收到了来自 AWS 的令牌验证错误,具体来说:

错误:错误域=com.amazonaws.AWSCognitoIdentityErrorDomain代码=8 “(空)”UserInfo = {__type = NotAuthorizedException,消息=无效 登录令牌。无法验证签名令牌。}

谷歌搜索该错误确实不会产生大量结果,但从我可以看出,应用程序中的事件顺序是正确的,但是 AWS 在与 Azure 通信时抱怨令牌的验证。

AWS 中没有太多可以配置身份提供程序的内容,例如机密、范围或任何其他内容,因此我不太确定该在哪里查找。

我希望对于经验丰富的 OpenID 专业人士来说,此错误消息的意义比对我而言更重要。

我不确定的一些事情可能是相关的。 1. Azure B2C 在我当前未使用的应用程序下有一个“密钥”的概念,因为我无法在实现中指定某种密钥。 2.

MSALPublicClientApplication.init
方法返回一个应用程序实例,然后我用它来调用
application.acquireToken(forScopes: kScopes)
。我不知道要为范围值添加什么,因为从我读到的内容来看,我只需要“openid”和“offline_access”,但是当我尝试指定这些值时,我收到一个错误,默认情况下它们已经包含在内我可以在 API 调用中指定它们。但是,我不允许将此字段留空,因此目前我有 Azure B2C 应用程序 ID(以 GUID 的形式),我不确定它是否正确。

非常感谢您的帮助!

azure amazon-web-services oauth openid azure-ad-b2c
2个回答
0
投票

您的设置看起来正确。不确定 MSAL 库,但直接从 Azure B2C 控制台进行测试时,您会获得不同的令牌,具体取决于您是否在授权 URl 中提及您的登录策略(使用“p”参数)。没有这个参数的可以工作,但是有这个参数的不行。与 OIDC Discovery 的工作原理及其在 AWS IAM 控制台中的配置方式有关。


0
投票

我实际上正在尝试将 Azure B2C 与 AWS cognito 一起实现。让我解释一下我的工作流程,当用户点击应用程序 URL 时,它必须重定向到 Cognito,从那里它必须重定向到 Azure AD B2C 租户以检查用户是否在那里。对于此设置,我已准备好 Azure AD B2C 租户和 AWS cognito。但不知道如何在 Azure AD B2C 和 AWS cognito 之间进行集成。点击哪个 URL,用户将被重定向到 AWS cognito 和 Azure AD B2C 租户。您介意帮我完成集成部分吗?

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