我正在将 Azure B2C 与 AWS 集成,即将 AWS Cognito 与 Azure B2C 设置为联合身份提供商,并将其用于移动应用程序的登录目的。
在大多数情况下,我相信我已经正确配置了所有内容。这就是我到目前为止所做的
MSALPublicClientApplication.init(clientId, kAuthority)
方法,后跟 acquireToken
。AWSCognitoCredentialsProvider
,该类是我根据 AWS 文档实现了 getToken 和登录方法的类。 经过大量来回,我已经成功克服了一路上的大部分障碍,但是我现在收到了来自 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 的形式),我不确定它是否正确。
非常感谢您的帮助!
您的设置看起来正确。不确定 MSAL 库,但直接从 Azure B2C 控制台进行测试时,您会获得不同的令牌,具体取决于您是否在授权 URl 中提及您的登录策略(使用“p”参数)。没有这个参数的可以工作,但是有这个参数的不行。与 OIDC Discovery 的工作原理及其在 AWS IAM 控制台中的配置方式有关。
我实际上正在尝试将 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 租户。您介意帮我完成集成部分吗?