在一个安卓应用程序中,我可以成功地验证科尼托的身份,它返回一个CognitoIdToken和一个CognitoAccessToken。
但我不知道如何使用它进行实际的身份验证调用,比如Lambda或S3。似乎在CognitoIdentityProvider (我似乎能够使用它)和CognitoCredentialsProvider (我没有)之间有一个鸿沟。
感谢你的想法,甚至一个指向使用认知和认证调用/角色的示例的指针。
编辑奖金问题:有人能解释一下为什么会有AWSCognito*和AmazonCognito*,以及为什么它们看起来几乎完全不相关?
发布于 2016-11-06 06:11:30
查看aws控制台中的联邦身份池。在身份浏览器中查看您正在进行身份验证的identityId (从日志中)。
关键是:如果标识id没有显示登录,那么您就没有经过身份验证。*当我说登录时,每个标识都有一个登录计数,如果单击identityProviderName,它将显示身份验证所使用的identityID。
这是一个简单的测试,如果您有登录,您将通过身份验证。如果你不这么做,你就不是。为什么AWS的文件都没有说.好吧..。谁知道呢。
如果您是经过身份验证的,那么SDK会存储令牌,您不需要担心它,您可以开始使用aws来配置您的服务。
(反应是基于IOS,但我相信,对于这些问题,它们是相同的- 这里的图表可能对你有帮助,但这是我在IOS sdk的笔记,我承认我没有在安卓系统上尝试过这一点)。
发布于 2016-11-08 17:40:40
最后,我确定没有调用将令牌设置到凭据提供程序中:
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以前是这样获得的(编辑):
CognitoCredentialsProvider cp = . . .
AmazonS3Client s3Client = new AmazonS3Client(cp);
TransferUtility s3transferUtility = new TransferUtility(s3Client);https://stackoverflow.com/questions/40413288
复制相似问题