配置用户池应用程序客户端 - Amazon Cognito
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置用户池应用程序客户端

在创建用户池后,您可以将应用程序客户端配置为使用内置网页来注册和登录用户。有关术语,请参阅应用程序客户端设置

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

  2. 选择 Manage User Pools (管理用户池)

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

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

  5. 选择 Add an app client

  6. 输入您的应用程序的名称。

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

  8. (可选)更改令牌到期设置。

  9. Select身份验证流配置选项。

  10. 选择 Color安全配置。我们建议您选择Enabled (已启用)

  11. (可选)选择设置属性读取和写入权限

  12. 选择 Create app client

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

  14. 选择返回池详细信息

您可以使用 Amazon CLI 创建、更新、描述和删除您的用户池应用程序客户端。

在这些示例中,用您的用户池和应用程序客户端 ID 值替换了“MyUserPoolID”和“MyAppClientID”。同样,您的参数值可能不同于这些示例中使用的值。

注意

回调和注销 URL 采用 JSON 格式,以防止 CLI 将它们视为远程参数文件:

—callback-urls “[” https://example.com “]”

—logout-urls “[” https://example.com “]”

更新用户池应用程序客户端(Amazon CLI 和 Amazon API)

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

如果命令成功,则 Amazon CLI 会返回确认:

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

请参阅 Amazon CLI 命令参考了解更多信息:update-user-pool-client

Amazon API:UpdateUserPoolClient

创建用户池应用程序客户端(Amazon CLI 和 Amazon API)

aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp

请参阅 Amazon CLI 命令参考了解更多信息:create-user-pool-client

Amazon API:CreateUserPoolClient

获取有关用户池应用程序客户端的信息(Amazon CLI 和 Amazon API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

请参阅 Amazon CLI 命令参考了解更多信息:describe-user-pool-client

Amazon API:DescribeUserPoolClient

列出一个用户池中所有应用程序客户端的信息(Amazon CLI 和 Amazon API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

请参阅 Amazon CLI 命令参考了解更多信息:list-user-pool-clients

Amazon API:ListUserPoolClients

删除用户池应用程序客户端(Amazon CLI 和 Amazon API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

请参阅 Amazon CLI 命令参考了解更多信息:delete-user-pool-client

Amazon API:DeleteUserPoolClient

应用程序客户端设置

以下术语和定义可帮助您配置应用程序客户端。

启用身份提供商

您可以选择身份提供商 (IDP) 来对用户进行身份验证。该服务可以由您的用户池或第三方(如 Facebook)来执行。要使用 IdP,先得启用它。可以启用多个 IdP,但必须至少启用一个。有关使用外部 IdP 的更多信息,请参阅通过第三方添加用户池登录

回调 URL

回调 URL 指示在用户成功登录之后将被重定向到哪里。选择至少一个回调 URL,且该 URL 应具有以下特点:

  • 是绝对 URI。

  • 已预先向客户端注册。

  • 不包含片段组件。

请参阅 OAuth 2.0 – 重定向终端节点

Amazon Cognito 要求HTTPSOVERHTTP但除外http://localhost仅用于测试目的。

应用程序回调 URL(如 myapp://example)也受支持。

注销 URL

注销 URL 指示在您的用户注销后会被重定向到哪里。

允许的 OAuth 流程

这些区域有:授予授权代码流启动代码授予流,该流程提供授权代码作为响应。此代码可用来与TOKEN 终端节点交换访问令牌。由于令牌绝不会直接向最终用户公开,因此它们不太可能被泄露。但是,后端需要自定义应用程序以将授权代码换成用户池令牌。

注意

出于安全原因,对于移动应用程序,强烈建议您仅将授权代码授予流程与 PKCE 一起使用。

这些区域有:隐式授予流允许客户端直接从访问令牌(以及可选的 ID 令牌,基于范围而定)获取访问令牌(以及可选的 ID 令牌)。AUTHORIZATION 终端节点。如果您的应用程序无法启动授予授权代码流程。有关更多信息,请参阅 OAuth 2.0 规范

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

这些区域有:客户端凭证流在机器对机器的通信中使用。利用该流,您可以请求访问令牌来访问自己的资源。当您的应用程序代表自己而不是代表用户来请求令牌时,使用此流。

注意

由于客户端凭证流不是代表用户使用的,所以只有自定义范围可以与该流一起使用。自定义范围就是您为自己的资源服务器定义的范围。请参阅 为您的用户池定义资源服务器

允许的 OAuth 范围

选择以下一个或多个 OAuth 范围来指定可以为访问令牌请求的访问权限。

  • 这些区域有:phone范围授予对phone_numberphone_number_verified声明。此范围只能通过 openid 范围来请求。

  • 这些区域有:email范围授予对emailemail_verified声明。此范围只能通过 openid 范围来请求。

  • 这些区域有:openid范围返回 ID 令牌中客户端可读取的所有用户属性。如果客户端未请求 openid 范围,则不返回 ID 令牌。

  • 这些区域有:aws.cognito.signin.user.admin作用域授予访问Amazon Cognito 用户池 API 操作,需要访问令牌,例如UpdateUserAttributesVerifyUserAttribute

  • profile 范围授予对客户端可读取的所有用户属性的访问权限。此范围只能通过 openid 范围来请求。

允许的自定义范围

自定义范围是您在资源服务器。格式为:资源-服务器-标识符/范围。请参阅 为您的用户池定义资源服务器

有关 OAuth 范围的更多信息,请参阅标准 OIDC 范围列表。