首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android,Cognito:可以登录,但不能进行认证的AWS调用

Android,Cognito:可以登录,但不能进行认证的AWS调用
EN

Stack Overflow用户
提问于 2016-11-04 00:06:49
回答 2查看 286关注 0票数 1

在一个安卓应用程序中,我可以成功地验证科尼托的身份,它返回一个CognitoIdToken和一个CognitoAccessToken。

但我不知道如何使用它进行实际的身份验证调用,比如Lambda或S3。似乎在CognitoIdentityProvider (我似乎能够使用它)和CognitoCredentialsProvider (我没有)之间有一个鸿沟。

感谢你的想法,甚至一个指向使用认知和认证调用/角色的示例的指针。

编辑奖金问题:有人能解释一下为什么会有AWSCognito*和AmazonCognito*,以及为什么它们看起来几乎完全不相关?

EN

回答 2

Stack Overflow用户

发布于 2016-11-06 06:11:30

查看aws控制台中的联邦身份池。在身份浏览器中查看您正在进行身份验证的identityId (从日志中)。

关键是:如果标识id没有显示登录,那么您就没有经过身份验证。*当我说登录时,每个标识都有一个登录计数,如果单击identityProviderName,它将显示身份验证所使用的identityID。

这是一个简单的测试,如果您有登录,您将通过身份验证。如果你不这么做,你就不是。为什么AWS的文件都没有说.好吧..。谁知道呢。

如果您是经过身份验证的,那么SDK会存储令牌,您不需要担心它,您可以开始使用aws来配置您的服务。

(反应是基于IOS,但我相信,对于这些问题,它们是相同的- 这里的图表可能对你有帮助,但这是我在IOS sdk的笔记,我承认我没有在安卓系统上尝试过这一点)。

票数 2
EN

Stack Overflow用户

发布于 2016-11-08 17:40:40

最后,我确定没有调用将令牌设置到凭据提供程序中:

代码语言:javascript
复制
    final CognitoCachingCredentialsProvider credentialsProvider = getCredentialsProvider(applicationContext);

    Map<String, String> logins = new HashMap<String, String>();
    logins.put(Constants.COGNITO_USER_POOL_LOGIN_STRING, cognitoUserSession.getIdToken().getJWTToken());
    credentialsProvider.setLogins(logins);

其中,Constants.COGNITO_USER_POOL_LOGIN_STRING类似于“cognito idp.us-west-2.amazonaws.com/”+ MY_COGNITO_USER_POOL_ID,在这样做之后,TransferUtility对象可以通过身份验证下载。TransferUtility以前是这样获得的(编辑):

代码语言:javascript
复制
CognitoCredentialsProvider cp = . . .
AmazonS3Client s3Client = new AmazonS3Client(cp);
TransferUtility s3transferUtility = new TransferUtility(s3Client);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40413288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档