我正在创建一个api服务(“我的Api”),最终用户是其他api(“客户端”)。这是我的第一个应用程序,客户端不是真实的人,因此我想确保自己正确通过了身份验证流程。
我正在使用AWS Cognito,并且已基于此post的“客户端凭证授予”部分进行身份验证。
我现在的流程是:
- 客户向我的Api注册
- 我的Api在AWS上创建一个应用程序客户端。我有一个简单的仪表板,它将向客户端显示client_id和client_secret(我的Api公开了一个端点来旋转client_secrets)
- 客户端将以下POST发送到我的AWS oauth2域
curl -X POST \
https://[DOMAIN_NAME].auth.[REGION].amazoncognito.com/oauth2/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'authorization: Basic BASE64(client_id:client_secret)' \
-d 'grant_type=client_credentials&scope=[SCOPE]'
- 客户端从AWS接收jwt形式的access_token
- 客户端将授权标头中的access_token发送到“我的Api”
- 我的Api验证access_token是否有效
- 我的Api提供对适用范围和client_id的资源的访问权限
我不得不在AWS Cognito上为每个客户端创建一个应用程序客户端,这似乎很奇怪。当您使用客户端凭据而不是授权码进行身份验证时,这正常吗?
如果是这样,有人可以指导我了解每个应用程序客户的价格是多少吗?是否在此page上的“使用用户池凭据或社交身份提供者直接登录的用户:”部分中?