配置用户池应用程序客户端
在创建用户池后,您可以配置一个应用程序客户端,以便使用内置网页来注册和登录用户。For terminology, see App Client Settings Terminology.
您可以使用 Amazon CLI 创建、更新、描述和删除您的用户池应用程序客户端。
在这些示例中,将您的用户池和应用程序客户端 ID 值替换为“MyUserPoolID
”和“MyAppClientID
”。同样,您的参数值可能不同于这些示例中使用的值。
回调和注销 URL 采用 JSON 格式,以防止 CLI 将它们视为远程参数文件:
--callback-urls
"["
https://example.com
"]"
--logout-urls
"["
https://example.com
"]"
更新用户池应用程序客户端(Amazon CLI 和 Amazon API)
在 Amazon CLI 中,输入以下命令:
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, "AuthSessionValidity": 3, "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-namemyApp
请参阅 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-idMyClientID
请参阅 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 要求使用
HTTPS
而不是HTTP
,但http://localhost
(仅用于测试目的)除外。应用程序回调 URL(如
myapp://example
)也受支持。 -
- 注销 URL
-
注销 URL 指示在您的用户注销后会被重定向到哪里。
- 允许的 OAuth 流程
-
Authorization code grant (授权代码授予) 流启动代码授予流,这会提供授权代码作为响应。此代码可用来与令牌端点交换访问令牌。由于令牌绝不会直接向终端用户公开,因此它们不太可能被泄露。但是,后端需要自定义应用程序以将授权代码换成用户池令牌。
注意 出于安全原因,对于移动应用程序,强烈建议您仅将授权代码授予流程与 PKCE
一起使用。 Implicit grant(隐式授予)流允许客户端直接从对端点授权获取访问令牌(根据范围,可选择获取 ID 令牌)。如果您的应用程序无法启动 Authorization code grant(授权代码授予)流,请选择此流。有关更多信息,请参阅 OAuth 2.0 规范
。 您可以同时激活 Authorization code grant(授权代码授予)和 Implicit code grant(隐式代码授予),然后按需使用每个授予。
Client credentials (客户端凭证) 流在机器到机器的通信中使用。您可以使用此流来请求访问令牌,从而访问自己的资源。当您的应用程序代表自己而不是代表用户来请求令牌时,选择此流。
注意 由于您没有以用户身份调用客户端凭证流程,因此只能使用此流程填充访问令牌的自定义范围。自定义范围就是您为自己的资源服务器定义的范围。请参阅为您的用户池定义资源服务器。
- 允许的 OAuth 范围
-
选择以下一个或多个
OAuth
范围来指定可以为访问令牌请求的访问权限。-
phone
范围授予对phone_number
和phone_number_verified
声明的访问权限。此范围只能通过openid
范围来请求。 -
email
范围授予对email
和email_verified
声明的访问权限。此范围只能通过openid
范围来请求。 -
openid
范围声明您要检索与 OpenID Connect 规范一致的范围。除非您请求openid
范围,否则 Amazon Cognito 不会返回 ID 令牌。 -
aws.cognito.signin.user.admin
范围授予对需要访问令牌的 Amazon Cognito 用户池 API 操作的访问权限,例如 UpdateUserAttributes 和 VerifyUserAttribute。 -
profile
范围授予对客户端可读取的所有用户属性的访问权限。此范围只能通过openid
范围来请求。
-
- 允许的自定义范围
-
自定义范围是您在 Resource Servers (资源服务器) 中为自己的资源服务器定义的范围。格式为:
资源-服务器-标识符
/范围
。请参阅为您的用户池定义资源服务器。
有关 OAuth 范围的更多信息,请参阅标准 OIDC 范围