Как ограничить пользовательский доступ к API с помощью AWS Cognito - PullRequest
0 голосов
/ 22 апреля 2020

Я использую Spring Boot в своем приложении. При поиске некоторых инструментов IAM мне действительно понравился Auth0, но я не по доступной цене. Итак, я нашел другой, названный AWS Cognito.

Ниже приведено Auth0 для ограничения нашего пользовательского доступа API

 https://auth0.com/docs/api-auth/restrict-access-api

В настоящее время я пытаюсь ограничить API доступа с помощью AWS cognito, но я не нахожу правильной документации для достижения этой цели. Может кто-нибудь сказать, пожалуйста, возможно ли ограничение доступа к API с помощью aws cognito.

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Зависит от того, насколько детализирован контроль над доступом к вашему API.

Разрешить или запретить сценарий

В некоторых случаях вы либо хотите полностью заблокировать кого-то или дать ему доступ ко всем вашим API. В этом сценарии «все или ничего» самый простой способ - использовать пулы пользователей Cognito самостоятельно для авторизации ваших пользователей. Пользовательские пулы Cognito просто используются для аутентификации пользователя (являются ли они теми, кем они его называют), а также для предоставления инструментов для упрощения регистрации и входа в систему.

Если пользователь проходит аутентификацию, вы можете пройти один из токенов, возвращаемых пулами пользователей cognito (токен идентификации) в API Gateway. Пока вы настроили свои методы api для использования авторизатора Cognito User Pools в API Gateway, этого будет достаточно, чтобы они приняли маркер идентификации в качестве авторизации для доступа к методам.

Fine- Grained Access

Однако в других случаях вам требуется более детальный контроль. Возможно, вы захотите, чтобы все прошедшие проверку пользователи имели доступ к определенному подмножеству ваших методов API, но только администраторы имели доступ к более ограниченным методам.

В этом случае вам также потребуется использовать Cognito Identity Pools, чтобы определить роли пользователей (например, UNAUTHENTICATED_USER, PAID_USER, ADMIN и c) и связанные с ними роли IAM , которые будут иметь политики, которые предоставляют им доступ, или запрещать им доступ к различным частям вашего API.

Затем вы устанавливаете авторизатор для ресурсов вашего шлюза API на AWS_IAM (вместо Cognito User Pools, как в примере «все или ничего» выше). API-шлюз будет использовать учетные данные роли, полученные из пула удостоверений Cognito, чтобы определить, есть ли у роли текущего пользователя разрешения на доступ к запрошенному ресурсу.

Например, возможно, ваша роль пользователя PAID_USER будет иметь следующий IAM роль прикреплена:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "execute-api:Invoke",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:execute-api:*:*:fjfkdlsjflds/*"
      ]
    },
    {
      "Action": "execute-api:Invoke",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:execute-api:*:*:fjfkdlsjflds/*/admin/*"
      ]
    }
  ]
}

Это дает им доступ к вашему API, кроме методов (ресурсов) API, которые вы настроили в / admin / .

Я настоятельно рекомендую * * * * * * * * * * *> * * * * * * * * * * * * * * * * * * * * *.

1 голос
/ 24 апреля 2020

Насколько я понимаю, вы пытаетесь разрешить авторизацию для ваших API. Cognito приходит на снимок в случае аутентификации (вместо вашей собственной базы данных и обработки пользователя он поддерживает все). С помощью Cognito вы можете создать пул пользователей и пул удостоверений для обработки аутентификации пользователей и создать маркер доступа для авторизации для последующих вызовов API. Следующее, что вам нужно сделать: 1) Зарегистрируйтесь в AWS Cognito и создайте пул управления пользователями и пул Identitiy. 2) Создайте приложение весенней загрузки (как вы уже упоминали, весенняя загрузка в вашем стеке) для аутентификации. 3) Добавить зависимость безопасности Spring. 4) Зарегистрировать приложение как приложение-ресурс в COgnito. 5) Выполнить аутентификацию и вернуть полученный токен. 6) Создайте другое приложение (для реального бизнеса у вас может быть несколько микросервисов). 7) Зарегистрируйте приложение весенней загрузки в качестве сервера ресурсов в Cognito. 8) Добавьте зависимость безопасности Spring для нового приложения. 9) Создайте обработчик, расширив WebSecurityConfigAdaper и переопределив конфигурацию. 10 ) Создайте фильтр, расширив OncePerRequestFilter. 11) Аутентифицируйте токен, проверив утверждения. 12) Ограничьте доступ API ко всем вызовам в методе cofigure configurer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...