Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用内置注册网页和登录网页

您可以在用户池中创建一个应用程序,以便使用可用的内置网页来对用户进行注册和登录。Amazon Cognito 的托管 UI 是其他功能(如通过 Facebook、Amazon 和 Google 以及通过 OpenID Connect (OIDC) 和 SAML 身份提供商直接登录到您的用户池)的基础。

添加应用程序客户端 (AWS 管理控制台)

  1. 转到 Amazon Cognito 控制台。系统可能会提示您输入 AWS 凭证。

  2. 选择 Manage your User Pools

  3. 从列表中选择现有用户池,或创建用户池

  4. 在页面左侧的导航栏上,选择常规设置下的应用程序客户端

  5. 选择 Add an app client

  6. 为应用程序指定名称。

  7. 除非您的授权流程有要求,否则应清除选项生成客户端密钥。客户端密钥由具有以下特点的应用程序使用:拥有可保护客户端密钥的服务器端组件。

  8. 选择 Create app client

  9. 记下应用程序客户端 ID

  10. 选择返回池详细信息

  11. 配置应用程序。

    1. 从控制台页面左侧的导航栏中选择应用程序客户端设置

    2. 选择 Cognito 用户池作为其中一个启用身份提供商

      注意

      要使用外部身份提供商 (IdP)(如 Facebook、Amazon 或 Google)以及通过 OpenID Connect (OIDC) 或 SAML IdP 进行登录,请首先按下文所述的方式配置它们,然后返回到应用程序客户端设置页面以启用它们。

    3. 键入一个回调 URL,供 Amazon Cognito 授权服务器在用户通过身份验证之后进行调用。对于 Web 应用程序,该 URL 应以 https:// 开头,如 https://www.example.com。

      对于 iOS 或 Android 应用程序,您可以使用类似 myapp:// 的回调 URL。

    4. 选择授权代码授予以返回随后与用户池令牌交换的授权代码。由于令牌绝不会直接向最终用户公开,因此它们不太可能被泄露。但是,后端需要自定义应用程序以将授权代码换成用户池令牌。出于安全原因,对于移动应用程序,建议您将授权代码授予流程与代码交换的证明密钥 (PKCE) 一起使用。

      允许的 OAuth 流程下,选择隐式授予以便从 Amazon Cognito 将用户池 JSON Web Token (JWT) 返回给您。当没有可用于将授权代码换成令牌的后端时,您可以使用此流程。它对于调试令牌也很有帮助。

      您可以同时启用授权代码授予隐式代码授予,然后按需使用每个授予。

      除非您希望明确地排除一个允许的 OAuth 范围,否则请选中所有“允许的 OAuth 范围”的复选框。

      注意

      只有在您的应用程序需要代表自己而不是代表用户请求访问令牌时才选择 Client credentials

    5. 选择 Save changes

  12. 配置域。

    1. 域名页面上,键入可用的域前缀。

    2. 记下完整的域地址。

    3. 选择 Save changes

查看您的登录页面

您可以使用以下 URL 查看托管 UI 登录网页。记下 response_type。在此示例中,response_type=code 表示身份验证代码授予。

https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

您可以使用针对隐式代码授予的以下 URL 查看托管 UI 登录网页,其中,response_type=token。成功登录后,Amazon Cognito 会将用户池令牌返回到您的 Web 浏览器的地址栏。

https://<your_domain>/login?response_type=token&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

您可以在响应中的 #idtoken= 参数后面找到 JSON Web Token (JWT) 身份令牌。

下面是来自隐式授予请求的示例响应。您的身份令牌字符串长得多。

https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=Bearer

您可以使用 AWS Lambda 解码和验证用户池令牌,请参阅 AWS GitHub 网站上的解码和验证 Amazon Cognito JWT 令牌

使用 RS256 算法对 Amazon Cognito 用户池令牌进行签名。

您可能需要先等待一分钟以刷新浏览器,之后才会显示您在控制台中所做的更改。

您的域将显示在域名页面上。您的应用程序客户端 ID 和回调 URL 将显示在应用程序客户端设置页面上。

注意

Amazon Cognito 托管的登录网页不支持自定义身份验证流程。