编程语言
首页 > 编程语言> > 我可以使用普通Java从AWS Cognito进行身份验证吗?

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

作者:互联网

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

整个流程应该是这样的:

>用户使用电子邮件和密码登录
> Backend(Lambda函数)从Cognito获取IdentityToken并将其返回给用户
>用户现在可以从Cognito检索凭据并初始化ApiClientFactory以授权对其他API端点的调用

有什么我缺少或做我只是让整个概念错了吗?关于这个的任何好的教程?我已经浏览了AWS上的所有可能的文档,但我发现很难解决它并且普通Java上没有单一的材料,只有Android.

解决方法:

通常,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中的Credentials对象获取.使用这些会话凭据(实际上是来自AWS Security Token Service / STS的凭据),创建一个BasicSessionCredentials对象,向其传递会话凭据和会话令牌,如Explicitly Specifying Credentials in the Java SDK developer guide所述.

标签:java,android,amazon-web-services,amazon-cognito
来源: https://codeday.me/bug/20190519/1136580.html