我是将Azure B2C与AWS集成的过程,即将AWS Cognito与Azure B2C一起设置为联合身份提供程序,并将其用于移动应用程序的登录目的。
在大多数情况下,我相信我已经正确配置了一切。这就是我到目前为止所做的事情
MSALPublicClientApplication.init(clientId, kAuthority)
方法后跟acquireToken
。AWSCognitoCredentialsProvider
,该类是我根据AWS文档实现了getToken和logins方法的类。 经过大量的反复尝试后,我已经设法完成了大部分障碍,但我现在从AWS获得了令牌验证错误,具体来说:
错误:错误Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 8 “(null)”UserInfo = {__ type = NotAuthorizedException,message = Invalid 登录令牌。无法验证签名令牌。}
谷歌搜索该错误确实不会产生大量结果,但从我可以看出,应用程序中的事件序列是正确的,但AWS在与Azure通信时抱怨令牌的验证。
AWS中没有很多可以配置身份提供程序的内容,例如机密,范围或任何内容,因此我不确定在哪里查看。
我希望对于经验丰富的OpenID专业人员来说,这个错误信息对我来说意味着更多。
我不确定的一些事情可能是相关的。
1. Azure B2C在我目前没有使用的应用程序下有一个“Keys”的概念,因为我无法在我的实现中指定各种键。
2. MSALPublicClientApplication.init
方法返回一个应用程序实例,然后我用它来调用application.acquireToken(forScopes: kScopes)
。我不知道要为scopes值添加什么,因为根据我的阅读,我只需要“openid”和“offline_access”,但是当我尝试指定那些时,我得到一个错误,它已经默认包含在内并且我可以在我的API调用中指定它们。但是,我不允许将此字段留空,所以目前我有Azure B2C应用程序ID(以GUID的形式),我不确定是否正确。
非常感谢你的帮助!
答案 0 :(得分:0)
您的设置看起来是正确的。不确定MSAL库,但直接从Azure B2C控制台测试时,根据您是否在授权URl中提到了您的登录策略(使用' p'参数),您会得到不同的令牌。没有这个参数的那个可以工作但是带有它的那个没有。与OIDC Discovery的工作方式及其在AWS IAM控制台中的配置方式有关。