我可以使用普通Java从AWS Cognito进行身份验证吗?

时间:2015-10-06 13:06:07

标签: java android amazon-web-services amazon-cognito

我想用Cognito测试自定义用户授权,并从简单的java代码中进行。问题是,CognitoCachingCredentialsProvider需要Android ApplicationContext并且不会接受null。

整个流程应该是这样的:

  1. 用户使用电子邮件和密码登录
  2. 后端(Lambda函数)从Cognito获取IdentityToken并将其返回给用户
  3. 用户现在可以从Cognito检索凭据并初始化ApiClientFactory以授权对其他API端点的调用
  4. 我有什么遗失或者我只是把整个概念弄错了吗?关于这个的任何好的教程?我已经浏览了AWS上的所有可能的文档,但我发现很难解决它并且普通Java上没有单一的材料,只有Android。

2 个答案:

答案 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 APIJava docs)从上面的服务器端步骤传递令牌,以将AWS Session凭据作为Credentials获取Java SDK中的对象。使用这些会话凭据(实际上是来自AWS Security Token Service / STS的凭据),创建一个BasicSessionCredentials对象,并按照Explicitly Specifying Credentials in the Java SDK developer guide中的描述向其传递会话凭据和会话令牌。

答案 1 :(得分:0)

试试此链接:https://aws.amazon.com/blogs/mobile/use-amazon-cognito-in-your-website-for-simple-aws-authentication/

它解释了Java SDK的一切。与记者类似,我在到达这里之前经历了大量的文件令人痛苦的经历。