首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚马逊认知Oauth2本地应用程序:最佳实践

亚马逊认知Oauth2本地应用程序:最佳实践
EN

Stack Overflow用户
提问于 2020-01-14 11:50:04
回答 2查看 1.1K关注 0票数 1

我正在为一个本地应用程序开发后端API。此后端服务(使用java/springboot开发)部署在AWS上。为了保护后端API的安全,我计划使用Oauth2 (授权代码授予流与PKCE)。

我正试图通过Amazon网关和认知用户池来实现这一点。到目前为止,这就是我所做的。

  1. 我已经创建了科尼图用户池
  2. 添加应用程序客户端( app客户端id/机密)
  3. 配置域和资源服务器
  4. 将授权代码授予配置为OAuth流的App设置
  5. 创建一个具有默认密码并更改密码的用户。
  6. 我已经设置了Amazon (将资源映射到我的后端),使用这个认知用户池作为Authorizer。

通过这些设置,我的工作流程如下所示

/oauth2/authorize作为代码调用我域的response_type端点,并传递所有必要的信息,如客户端id、callbackurl、code_challenge_method、code_challenge等。这将重定向到/login页面。我使用上面第5步中创建的用户名/密码登录。这会给我一个密码。

用上一步返回的代码调用/oauth2/token和所有其他必要的细节,包括code_verifier。这将返回给我access_token(refresh_token,id_token)

使用此令牌调用Amazon网关端点。

这一切都很好。但我有几个问题。

  1. 当用户每次从playstore下载应用程序时,我会创建一个应用程序客户端(步骤2)吗?应用程序客户端与每个用户或每个应用程序相关吗?
  2. 每当用户下载应用程序并想使用它时,我是否需要创建一个新用户(上面的步骤5)?我有我自己的客户注册/登录过程在我的应用程序/后端实现。我不想让亚马逊来处理这件事。但是我至少需要一个认知用户池来获得代码(步骤A)。不知道该怎么处理。
  3. 目前,我正在使用虚拟回调url。因为这是一个必修的领域。如何在我的本地应用程序中处理这个问题?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-14 13:21:47

  1. 您需要创建两个应用程序客户端(后端应用程序有一个秘密),而对本机应用程序没有秘密。secret用于服务器应用程序在某些情况下调用认知API。=> **并不是每次都有,只有两个应用程序客户端**。AWS有一个限制。参考文献:https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html
  2. 最好的做法是用户自己创建一个帐户。然后登录并从后端获取凭据。依赖于凭据,您将启用或禁用本机应用程序中的功能。
  3. 作为AWS文档,可以将回调URI设置为myapp://。但我还是用假的回调。我从HTTP报头获得令牌(这是从科尼托返回的)
票数 1
EN

Stack Overflow用户

发布于 2020-01-14 19:39:01

为了补充图安VA的优点:

  1. 用户需要保存到Cognito以及您的后端。我的写作可能会帮助您理解选项,这些选项可能会根据安全所有权所在的位置而有所不同。
  2. 最标准的选项是使用基于私有uri方案的回调,如com.mycompany.myapp:/回调

如果有帮助的话,我有一个Android示例应用程序,您可以快速运行与科尼图

不过,我的示例非常详细,涉及集成AppAuth库,因此可能比您需要的要复杂。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59733220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档