Android AWS Cognito应用 - 用户登录,无需嵌入敏感信息(如密钥)

问题描述 投票:0回答:1

TL; DR没有分布式私钥,我如何为身份提供者本身为Cognito的Android应用程序执行auth flow,用户只能使用电子邮件/密码注册?


我正在开发一个Android应用程序,我希望用户使用“电子邮件和密码”(不是谷歌,Facebook等)登录,然后能够从S3下载/上传对象。我已经与AWS合作了几个月,但我的应用程序的登录功能始终是基于示例应用程序(其来源显然发生了显着变化),它使用“AWSConfiguration”类来存储:

  • AWS_MOBILEHUB_USER_AGENT
  • AMAZON_COGNITO_REGION
  • AMAZON_COGNITO_IDENTITY_POOL_ID
  • AMAZON_COGNITO_USER_POOL_ID
  • AMAZON_COGNITO_USER_POOL_CLIENT_ID
  • AMAZON_COGNITO_USER_POOL_CLIENT_SECRET

我需要实现登录和授权以使用AWS模块(如S3)而不嵌入敏感信息。

我似乎很清楚,这将是一个“滚动我自己”的情况所以回到好的'start of the documentation on cognito',我已经很困惑为什么我的“电子邮件和密码”登录模型既不适合"Public Provider""Developer Authenticated Identity"的法案:

来自Mobile Hub:"Email and password"

Cognito > MyUserPool > App Integration > App client settings它仍然作为某种形式的身份提供者出现(也没有我必须“启用”它的工作):

"Email and password" as an identity provider in User Pools

最大的问题是:是否可以实现登录流程,用户输入电子邮件和密码,使用Cognito登录,并且应用程序具有必要的信息来实例化S3Object = new S3Client(credentialsProvider).getObject(...)之类的内容而无需(单独/代理) )服务器处理私钥?

此外,还是应用程序所需的回调/注销URL(如果是,为什么)?

android amazon-web-services amazon-cognito
1个回答
0
投票

关于SDK中对服务常量进行模糊处理的问题,没有标准方法可以做到这一点 - 这提供了有保证的安全性。有几个基于第三方和服务器的解决方案。但是,Cognito不建议使用任何特定的混淆技术。

要实施登录并获取访问AWS资源的凭据,您可以将Cognito添加为身份池的身份验证提供程序。有了这个,您将能够使用Cognito出售的ID令牌来访问AWS资源。此代码段显示了如何使用Cognito UserPools发布的令牌来访问Android中的AWS资源。

 // Get id token from CognitoUserSession.
    String idToken = cognitoUserSession.getIdToken().getJWTToken(); 

 // Create a credentials provider, or use the existing provider.
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(context, IDENTITY_POOL_ID, REGION);

 // Set up as a credentials provider.
    Map<String, String> logins = new HashMap<String, String>(); 
    logins.put("cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789", cognitoUserSession.getIdToken().getJWTToken()); 
    credentialsProvider.setLogins(logins);

有关更多详细信息,请参阅本教程 - http://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-integrating-user-pools-android.html#tutorial-integrating-user-pools-getting-aws-credentials-android

© www.soinside.com 2019 - 2024. All rights reserved.