为您的用户池定义资源服务器
在为用户池配置域后,Amazon Cognito 会自动预置一个托管 Web UI,您可使用此 UI 为应用程序添加注册页和登录页。有关更多信息,请参阅第 2 步 添加应用程序以启用托管 Web UI。
资源服务器是访问受保护的资源的服务器。它处理从具有访问令牌的应用程序发送的身份验证请求。通常情况下,资源服务器将提供 CRUD
您的资源服务器在处理访问令牌内的任何声明之前必须验证访问令牌的签名和到期日期。有关验证和使用用户池令牌的更多信息,请参阅《Amazon 博客》中的 Integrating Amazon Cognito User Pools with API Gateway
范围是应用程序可请求的对资源的访问权限的级别。例如,如果您有一个照片资源服务器,它可能会定义两个范围:一个用于对照片的读取访问,另一个用于写入/删除访问。当应用程序发出请求访问权限的 API 调用并传递访问令牌时,该令牌将有一个或多个嵌入到其中的范围。
概览
利用 Amazon Cognito,应用程序开发人员可以创建自己的 OAuth2.0 资源服务器并在其中定义自定义范围。自定义范围随后可以与某个客户端关联,该客户端可以在 OAuth2.0 授权代码授予流、隐式流和客户端凭证流中请求这些范围。将在访问令牌的 scope
声明中添加自定义范围。客户端可对其资源服务器使用访问令牌,然后服务器基于令牌中给出的范围做出授权决定。有关访问令牌范围的更多信息,请参阅将令牌与用户池结合使用。
您的资源服务器在处理访问令牌内的任何声明之前必须验证访问令牌的签名和到期日期。
如果某个应用程序客户端有客户端密钥,则它只能使用客户端凭证流。
管理资源服务器和自定义范围
在创建资源服务器时,您必须提供资源服务器名称和资源服务器标识符。对于您在资源服务器中创建的每个范围,您都必须提供范围名称和描述。
例如:
-
Name
:资源服务器的易记名称,如Weather API
或Photo API
。 -
Identifier
:资源服务器的唯一标识符。这可能是您的资源服务器所在的 HTTPS 端点。例如,https://my-weather-api.example.com
。 -
Scope Name
:范围名称。例如,weather.read
。 -
Scope Description
:范围的简要说明。例如:Retrieve weather information
。
当客户端应用程序在任一 OAuth2.0 流中请求自定义范围时,它必须请求范围的完整标识符,即
。例如,如果资源服务器标识符是 resourceServerIdentifier
/scopeName
https://myphotosapi.example.com
,范围名称是 photos.read
,则客户端应用程序必须在运行时请求 https://myphotosapi.example.com/photos.read
。
从资源服务器中删除一个范围不会删除其与所有客户端的关联;删除范围反而只会使其处于非活动状态。如果客户端应用程序在运行时请求已删除的范围,则该范围将被忽略,并且不会包含在访问令牌中。如果之后重新添加了该范围,它将会再次包含在访问令牌中。
如果从客户端中删除了某个范围,则会删除客户端与范围之间的关联。如果客户端在运行时请求了不允许使用的范围,则会返回错误并且不会颁发访问令牌。
您可以使用 Amazon Web Services Management Console、API 或 CLI 为您的用户池定义资源服务器和范围。
为您的用户池定义资源服务器(Amazon Web Services Management Console)
您可以使用 Amazon Web Services Management Console为您的用户池定义资源服务器。
为您的用户池定义资源服务器(Amazon CLI 和 Amazon API)
使用以下命令可为您的用户池指定资源服务器设置。
创建资源服务器
-
Amazon CLI:
aws cognito-idp create-resource-server
-
Amazon API:CreateResourceServer
获取有关您的资源服务器设置的信息
-
Amazon CLI:
aws cognito-idp describe-resource-server
-
Amazon API:DescribeResourceServer
列出用户池的所有资源服务器的相关信息
-
Amazon CLI:
aws cognito-idp list-resource-servers
-
Amazon API:ListResourceServers
删除资源服务器
-
Amazon CLI:
aws cognito-idp delete-resource-server
-
Amazon API:DeleteResourceServer
更新资源服务器的设置
-
Amazon CLI:
aws cognito-idp update-resource-server
-
Amazon API:UpdateResourceServer