在python boto3中使用AWS cognito Identity和openID salesforce



我正在为一个应用程序执行POC,该应用程序将使用OpenID从Salesforce使用SSO,并将id_token传递给cognito用户标识以获得s3的临时凭据。我已经在AWS/Salesforce上设置了所有角色、服务和应用程序。当我为我的身份启用未经授权的访问时,我可以访问s3。但每当我试图通过id_token进行身份验证访问时,它都会给我带来以下错误:

botocore.erroractory.NotAuthorizedException:发生错误调用GetId操作时出现(NotAuthorizedException(:无效登录令牌。发卡机构与提供商名称不匹配

我在这里学习教程https://aws.amazon.com/blogs/security/building-an-app-using-amazon-cognito-and-an-openid-connect-identity-provider/

我使用的是python Boto3。这是我当前的代码:

import boto3
id_token='aaaaaa.bbbbbbbb.cccccccc' #Got from the url salesforce sends after successful authentication
client = boto3.client('cognito-identity', 'us-east-2')
resp = client.get_id(AccountId='123456789123', IdentityPoolId='us-east-2:xxxxxxx-yyyy-zzz-hhhhh-jj888hhhh',
Logins={
'provider_url': id_token
}
)

如有任何帮助,我们将不胜感激。

显然问题出在错误提示的provider_url上。我只是放了login.salesforce.com,但我不得不将其更改为id_token作为其发行人id返回的内容。我必须在IAM和代码中的AWS访问提供商中更改它。

最新更新