AWS Cognito User Pool App Client 中的设置意味着什么

What the settings mean in AWS Cognito User Pool App Client

我搜遍了,教程,网络,每个人都不解释就跳了(我明白为什么)应用程序客户端设置中的复选框:

  1. 为基于服务器的身份验证启用登录API
  2. 只允许自定义身份验证
  3. 为基于应用程序的身份验证启用用户名-密码(非 SRP)流程

学的再多link对我也没有帮助,很多资料并没有那么容易理解、掌握。有人可以解释这个设置。谢谢

这是我试图解释这些选项的尝试。在此之前,我想简单提一下 Oauth2,这是 AWS Cognito 所基于的协议。

在 AWS Cognito 的上下文中,Cognito 本身是 身份验证 (OAuth) 服务器,也是 资源服务器(因为我们创建Cognito 用户池中的用户),您的应用程序将是 Client(发送身份验证请求)。客户端必须首先向 OAuth 服务器注册自己——这是在 Cognito 的 "App clients" 部分所做的。

推荐的 OAuth2 流程是 Authorization Code Grant flow。在这个流程中,

i) The Client sends username/password to the OAuth Server.

ii) The OAuth server validates and calls back the client with a authorization code.

iii) The Client again sends this code back to the OAuth server

iv) The OAuth server sends the tokens to the Client.

有关 OAuth2 的更多说明,请阅读上面链接的文章。

现在解释 Cognito App Client 设置中的选项:

1。为基于服务器的身份验证启用登录 API

使用此选项,您的客户端应用程序可以直接接收令牌而无需首先获取授权码的额外步骤。

有像 AdminInitiateAuth、Admin-* 这样的 Cognito API 可以执行此操作。但是,这些 API 需要 AWS 管理员凭据。因此通常这些调用是由客户端应用程序的后端服务器完成的。前端可以将 username/password 传递给后端,后端服务器可以与 AWS Cognito 通信并授权用户。

2。只允许自定义身份验证

此处您不使用 OAuth 提供的授权代码授予流程。相反,您可以定义自己的步骤和挑战。在进行身份验证和提供令牌之前,您的客户端应用程序可以询问一个秘密问题等。

3。为基于应用程序的身份验证启用用户名-密码(非 SRP)流程

这是最不安全的流程。这将跳过返回 授权码 的部分,并直接 returns 将令牌返回给客户端。

我希望这能解释清楚。

这是我对此事的看法。

应用程序客户端有多个身份验证流程配置。

1.为管理员启用用户名密码验证 APIs 以进行身份​​验证 (ALLOW_ADMIN_USER_PASSWORD_AUTH)

这将启用服务器端身份验证流程。如果您没有最终用户应用程序,而是使用安全后端或服务器端应用程序。

2。启用基于 lambda 触发器的自定义身份验证 (ALLOW_CUSTOM_AUTH)

这将启用自定义身份验证流程。这可以帮助您使用 AWS Lambda 触发器创建 challenge/response-based 身份验证模型。 https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html

User Pools -> Triggers 下,您可以看到许多 lambda 函数。您可以使用 Create Auth ChallengeDefine Auth ChallengeVerify Auth Challenge Response 函数来创建自定义身份验证流程。

3。启用基于用户名密码的身份验证 (ALLOW_USER_PASSWORD_AUTH)

这将启用使用基于用户密码的身份验证的客户端身份验证流程。在此流程中,Cognito 在请求中接收密码。

您可以使用适用于 Android 的 AWS 移动开发工具包、适用于 iOS 的 AWS 移动开发工具包或适用于 JavaScript 的 AWS 开发工具包来实施此操作。

4.启用基于 SRP(安全远程密码)协议的身份验证 (ALLOW_USER_SRP_AUTH)

这与上面第 3 节中的流程类似,除了密码验证。此流程使用 SRP 协议来验证密码。

http://srp.stanford.edu/whatisit.html https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolClientType.html

5.启用基于刷新令牌的身份验证 (ALLOW_REFRESH_TOKEN_AUTH)

身份验证成功后,Amazon Cognito returns 用户池令牌(三个令牌)到您的应用程序。您可以使用令牌授予您的用户访问您自己的服务器端资源或 Amazon API 网关的权限。或者,您可以将它们交换为临时 AWS 凭证以访问其他 AWS 服务。

三个token分别是ID Token(JWT)、Access Token、Refresh Token。刷新令牌可用于检索新 ID 和访问令牌。登录移动应用程序后,您无需在每次关闭和打开应用程序时都登录,此功能是使用刷新令牌实现的。

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

托管的 Amazon Cognito 怎么样 UI?

应用程序客户端可以配置为使用内置的 Cognito 网页来注册和登录用户。使用托管 UI 时,您可以同时启用授权代码授权和隐式代码授权,然后根据需要使用每个授权。

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html