其他分享
首页 > 其他分享> > android – 使用AWS的典型应用用户身份验证

android – 使用AWS的典型应用用户身份验证

作者:互联网

我的主要问题是移动应用验证用户的典型方式是什么?我知道AmazonCognito用于在收到令牌后同步userdata,但该令牌只是一组访问规则,对吧?这与特定用户无关(只是他们一般是经过身份验证的用户).

但在此之前,需要有一种方法来验证用户注册的用户名/密码,以便您可以检索令牌.在几乎所有文档中,他们使用Facebook / Google /等作为第三方提供商的示例,并且有一个设置您自己的第三方提供商的示例,但这都需要您自己的后端来为其提供服务. C

考虑到可能有许多用户尝试使用该应用并进行身份验证,在其他地方设置后端似乎不是一个坏主意吗?有没有办法将此部分集成到AWS中,以便没有自定义后端工作?这通常是怎么做的?

站点节点:我目前正在使用Android SDK.

谢谢 :)

解决方法:

AWS Cognito有两个不同的用途.一种是按照您在问题中描述的方式同步数据.
另一个是帮助管理用户身份,并在外部身份提供商(您自己的,Facebook,Google或亚马逊)和AWS之间创建粘合剂.

这是高级别的工作流程.详情请见http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html

>使用AWS控制台,创建Cognito身份池
>将两个IAM策略关联到Cognito Identity Pool.一个用于未经身份验证的用户,另一个用于经过身份验证的用户.最佳做法是为这两类用户授予最低权限. AWS控制台将帮助您完成这些步骤,并提出合理的默认值.
>在您的代码中,初始化您的CognitoCredentialsProvider对象

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
        myActivity.getContext(),//获取当前活动的上下文
        “AWS_ACCOUNT_ID”
        “COGNITO_IDENTITY_POOL”
        “阿尔恩:AWS:IAM :: AWS_ACCOUNT_ID:角色/ UNAUTHENTICATED_ROLE”
        “阿尔恩:AWS:IAM :: AWS_ACCOUNT_ID:角色/ AUTHENTICATED_ROLE”
        Regions.US_EAST_1
);

>在您的代码中,像往常一样继续对用户进行身份验证(使用您自己的提供商或Facebook,Google或亚马逊)
>当您收到身份提供商颁发的令牌时,将其与Cognito相关联. Cognito SDK将透明地将此令牌换成临时AWS Access Key,服务客户端可以使用的密钥.
>将凭据提供程序提供给服务客户端对象,例如

AmazonDynamoDB客户端=新的AmazonDynamoDBClient(credentialsProvider);

此方法允许您避免将自己的后端部署为AWS服务的代理.大多数服务呼叫都可以直接通过移动应用程序进行,从而以较低的成本实现良好的可扩展性.

您自己的后端只需要卸载移动设备的某些计算任务,或者如果您想要实现自己的身份提供程序并使其与Cognito交互(请参阅http://mobile.awsblog.com/post/Tx2FL1QAPDE0UAH/Understanding-Amazon-Cognito-Authentication-Part-2-Developer-Authenticated-Ident的详细工作流程)

标签:authentication,android,amazon-web-services,mobile-application
来源: https://codeday.me/bug/20190624/1276497.html