Amazon Cognito-OpenID Connect-无效+ProviderName/Username+组合



我正在尝试在我的Cognito用户池中配置MicrosoftAzure AD B2C身份提供程序。

我正在使用https://www.npmjs.com/package/@我前端的aws放大/auth库。

我已将新的身份提供程序命名为Microsoft。我还在我的用户池中启用了它。并且我将相同的(Microsoft(传递给Auth.federatedSignIn方法。

现在,当我尝试使用Microsoft对用户进行身份验证时,用户会从Microsoft端进行身份验证,但Cognito会给我?error_description=Invalid+ProviderName/Username+combination.+Please+check+again+&state=XmnGedOhmT99RnTlw0LypyMmqwCRbCZr&error=invalid_request错误。

这对我来说似乎是一个配置问题,但我无法弄清楚它是什么。

请帮忙。

经过一段时间后,我们设法解决了这个问题。问题是,用户与ProviderAttributeValue链接为小写,但在OIDC提供商的子声明中有大写字母,这就是整个混乱的来源。如果用户与子索赔提供的原始值相关联,则一切正常

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html

{
"DestinationUser": { 
"ProviderAttributeName": "string",
"ProviderAttributeValue": "string",
"ProviderName": "string"
},
"SourceUser": { 
"ProviderAttributeName": "string",
"ProviderAttributeValue": "string" //ensure that value is same as in sub claim,
"ProviderName": "string"
},
"UserPoolId": "string"
}

要访问预注册lambda中的原始子声明,您应该将子声明从OIDC提供程序映射到自定义属性,即custom:sub。应用程序客户端还必须具有对自定义属性的读写权限,才能显示在lambda事件用户属性event.request.userAttributes['custom:sub']中。

最新更新