我想用Cognito测试自定义用户授权,并从简单的java代码中进行。问题是,CognitoCachingCredentialsProvider需要Android ApplicationContext并且不会接受null。
整个流程应该是这样的:
我有什么遗失或者我只是把整个概念弄错了吗?关于这个的任何好的教程?我已经浏览了AWS上的所有可能的文档,但我发现很难解决它并且普通Java上没有单一的材料,只有Android。
答案 0 :(得分:5)
通常,Amazon Cognito用于“不受信任”的客户端(如移动和JavaScript应用),以便将临时AWS凭证直接出售给最终用户。由于我们看到的最常见的Java客户端应用程序是Android应用程序,因此我们的指南侧重于Android而不是普通的Java,但同样的过程将与Java SDK一起使用。
正如您所提到的那样使用Amazon Cognito的Developer Authenticated Identities feature时,您将从后端(lambda)函数调用Amazon Cognito的GetOpenIdTokenForDeveloperIdentity获得一个OpenID Connect令牌。成功验证用户后,您的后端应该将该令牌提供给客户端应用程序。
然后,客户端应用程序需要调用Cognito的GetCredentialsForIdentity API(Java docs)从上面的服务器端步骤传递令牌,以将AWS Session凭据作为Credentials获取Java SDK中的对象。使用这些会话凭据(实际上是来自AWS Security Token Service / STS的凭据),创建一个BasicSessionCredentials
对象,并按照Explicitly Specifying Credentials in the Java SDK developer guide中的描述向其传递会话凭据和会话令牌。
答案 1 :(得分:0)
它解释了Java SDK的一切。与记者类似,我在到达这里之前经历了大量的文件令人痛苦的经历。