1-вопрос, ключ Cognito против API
Ну, как вы можете видеть здесь .
Amazon Cognitoпользовательские пулы позволяют создавать настраиваемые решения для проверки подлинности и авторизации для ваших REST API.
планы использования позволяют предоставлять ключи API своим клиентам, а затем отслеживать и ограничивать использование вашего APIэтапы и методы для каждого ключа API
Таким образом, цель различна, ключ API используется в основном для подсчета использования клиента, в то время как AWS Cognito существует для аутентификации / авторизации вызовов вашего API.
Допустим, у вас есть требование, чтобы пользователь трассы не мог вызывать ваш API более 100 раз.
Затем, используя AWS Cognito, вы разрешите пользователю зарегистрироваться, также вы предоставите тому же пользователю ключ API, вы будете определять источник вызовов с помощью Cognito, и с каждым вызовом API-шлюз будет уменьшатьсяпредел, назначенный API-ключу пользователя на 1.
. У вас будут следующие случаи:
- Когда токен (полученный при входе в систему с использованием имени пользователя и пароля) и API-ключ действительны, тогда вызов будет успешным.
- Если токен неверен / отсутствует, ваш вызывающий абонент получит код состояния 401.
- Если ключ API неверен / отсутствует, ваш вызывающий абонент получит код состояния 403.
- Если ключ API введен правильно, но лимит превышен, вызывающий абонент получит код состояния 429.
2.Вопрос, клиент приложения:
Ну, идентификатор клиента и секреты клиента предназначены для идентификации доверенного клиента (приложения), а не пользователя, и каждое приложение должно иметь свой собственный идентификатор клиента, поэтому, если вызывающийприложение не пользователь, так что да, создайте идентификатор клиента для каждого отдельного приложения.Помните, что секреты клиента должны храниться в тайне, поэтому, если приложение вызывающего абонента не может этого достичь, например одностраничные приложения Javascript или собственные приложения, секрет не должен выдаваться.
3.Вопрос, Сервер ресурсов:
Это ваш сервер API.
Проверьте эту страницу .
Сервер ресурсов являетсяТермин OAuth 2.0 для вашего сервера API.Сервер ресурсов обрабатывает аутентифицированные запросы после того, как приложение получило токен доступа.
Крупномасштабные развертывания могут иметь более одного сервера ресурсов.Сервисы Google, например, имеют десятки серверов ресурсов, таких как платформа Google Cloud, Google Maps, Google Drive, Youtube, Google+ и многие другие.Каждый из этих серверов ресурсов имеет свои особенности, но все они используют один и тот же сервер авторизации.
4.Вопрос, рабочий процесс клиента
Проверка предоставления учетных данных клиента в здесь
Шаги для процесса следующие:
An app makes a POST request to https://AUTH_DOMAIN/oauth2/token, and specifies the following parameters:
grant_type – Set to “client_credentials” for this grant type.
client_id – The ID for the desired user pool app client.
scope – A space-separated list of scopes to request for the generated access token.
In order to indicate that the app is authorized to make the request, the Authorization header for this request is set as “Basic
BASE64 (CLIENT_ID: CLIENT_SECRET) «, где BASE64 (CLIENT_ID: CLIENT_SECRET) является представлением base64 идентификатора клиента приложения и секрета клиента приложения, соединенных двоеточием.Сервер авторизации Amazon Cognito возвращает объект JSON со следующими ключами: access_token - действительный токен доступа пула пользователей.expires_in - промежуток времени (в секундах), в течение которого указан токен доступа.token_type - устанавливается на «Носитель».
Note that, for this grant type, an ID token and a refresh token aren’t returned.
The app uses the access token to make requests to an associated resource server.
The resource server validates the received token and, if everything checks out, executes the request from the app.