【问题标题】:How to authenticate user using AWS Cognito via Java API如何通过 Java API 使用 AWS Cognito 对用户进行身份验证
【发布时间】:2017-05-23 04:57:40
【问题描述】:

我们正在构建一个带有 Web(角度)门户(用于管理目的)的 iOS/android 应用程序。后端 API 将使用 Java 构建,考虑到 Web 门户可能有不同类型的用户,我正在考虑使用 Spring 安全性。

我正在考虑使用我的后端服务来使用 AWS Cognito 对用户进行身份验证。我不想将 iOS/Andorid/Web 直接与 AWS Cognito 集成,因为将来我们可能需要切换到其他提供商。

我不确定这是否可能,但我正在考虑这样的事情: 1.注册API:iOS/Android/Web(有角色)用邮箱和密码调用我的后端服务。后端服务向 AWS Cognito 注册用户。 AWS Cognito 将为该用户返回一个标识符,以及我将在本地数据库中使用的相同标识符来创建链接 b/w 用户以及角色和其他表。后端服务将向客户端(iOS/Android 和 Web)返回一个 json 响应,说明用户已创建。

  1. 登录 API:iOS/Android/Web(带角色)使用电子邮件和密码调用我的后端服务。后端服务将电子邮件和密码传递给 AWS Cognito。如果用户可用,AWS Coginto 返回一个令牌(带有过期时间),该令牌通过后端服务传递给客户端(iOS/Andorid/Web),如果不可用则抛出异常。

  2. 获取用户信息 API:一旦用户登录,iOS/Android/Web(带角色)使用令牌(从登录 API 获取)调用我的后端服务。后端服务使用 AWS Cognito 验证令牌。如果令牌有效,AWS Cognito 还会返回用户信息,例如电子邮件和标识符,以在我的本地数据库中识别用户。

  3. 任何其他 API:所有其他后端都用作获取用户信息,即客户端 (iOS/Andorid/Web) 使用令牌调用后端服务,并且支持的服务使用相同的令牌使用 AWS Cognito 对用户进行身份验证.

  4. 注销 API。一旦调用此 API,令牌就会失效。

我已经阅读了很多关于 AWS Cognito 的文档,但我读的越多,我就越感到困惑。如果有人可以让我知道上述是否可以通过 AWS Cognito 实现,那将是一个很大的帮助,如果可以,我该如何继续。

提前致谢!!

【问题讨论】:

    标签: java amazon-web-services spring-security aws-sdk aws-cognito


    【解决方案1】:

    我认为您应该在客户端上与 Cognito 集成,即使您明确指出以下几点:

    我不想将 iOS/Andorid/Web 直接与 AWS Cognito 集成,因为将来我们可能需要切换到其他提供商。

    通过在服务器端综合处理客户凭据,您增加了对客户的风险和潜在威胁。这听起来不像您的应用程序的核心业务。这是Cognito的核心业务。

    在我看来,在客户端上与 Cognito 集成可以解决您的所有问题。我只是不确定是否要取回用户元数据(例如电子邮件地址),但无论如何,您自己做部分的工作比做任何事情都要少。

    此外,即使您希望在将来切换身份提供商,Cognito 也支持多种(Google、Facebook、Amazon),如果您真的需要,甚至可以自定义。

    【讨论】:

      【解决方案2】:

      正如@Viccari 在他的回复中解释的那样,您不应该提供有关安全性的“自定义”解决方案。最好的方法是将 Cognito SDK 集成到您的客户端代码中。它将处理与您的代币有关的所有事情。另外,如果您的应用程序使用 AWS API Gateway,您可以将 API 配置为使用 Cognito Authorizer。无论如何,如果你真的需要自定义身份验证,我建议使用Developer Authenticated Identities,它提供了一种机制,允许你在与 Cognito 集成的同时对用户进行身份验证。

      最好的问候,

      【讨论】:

        猜你喜欢
        • 2019-12-31
        • 2020-06-01
        • 2020-01-01
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        • 2017-12-03
        • 2018-07-13
        相关资源
        最近更新 更多