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

У меня вопрос о том, как мне следует защитить конечную точку API-шлюза.

В настоящее время я работаю с веб-приложением и использую API-шлюз и AWS cognito.

Я использую aws cognito для управления пользователями, которые регистрируются.

Однако не все конечные точки требуют, чтобы пользователь был зарегистрирован / зарегистрирован, чтобы получить к нему доступ. Существуют некоторые конечные точки, которые будут возвращать различные полезные данные в зависимости от того, зарегистрирован ли пользователь в системе. Например, если пользователь вошел в систему, он увидит там входящие сообщения на странице, однако, если пользователь не вошел в систему, он просто увидит содержимое страницы. Подобно тому, как это делают твиттер или фейсбук.

Каков наилучший способ защиты этих типов конечных точек. Если я использую aws_iam для его защиты, означает ли это, что любой пользователь, который еще не зарегистрировался, не может получить доступ к конечной точке? Или, если я использую авторизаторы пула Cognito, я смогу отличить guish от зарегистрированного пользователя и незарегистрированного пользователя?

Спасибо, любая помощь и дополнительные объяснения будут высоко оценены. Я все еще пытаюсь разобраться в Cognito.

1 Ответ

0 голосов
/ 17 февраля 2020

Ваш вопрос: если конечная точка возвращает разные полезные данные в зависимости от того, зарегистрирован ли пользователь / зарегистрирован, должна ли эта конечная точка защищаться (используя AWS Cognito)?

У нас есть два решения:

  1. Решение 1: Определить одну конечную точку. Эта конечная точка не защищена. В коде интеграции с Apigateway проверяется, предоставляется ли Cognito Authorizer.
    • Если предоставляется «cognito authorizer» (вошел в систему пользователь), возвращает данные для вошедшего в систему пользователя
    • Если «cognito authorizer» НЕ предоставлен (НЕ вошел в систему пользователя), возвращает данные для посетителя
  2. Решение 2. Определите три конечные точки. Один для получения начального запроса, один для возврата данных посетителя, один для возврата данных вошедшего в систему пользователя:
    • Конечная точка # 1: Получите начальный запрос, проверьте, предоставляется ли авторизатор Cognito <= <strong>Эта конечная точка не защищен.
      • Если предоставляется «cognito authorizer» (вошел в систему), перенаправить запрос на конечную точку # 2
      • Если «cognito authorizer» НЕ предоставлен (НЕ вошел в систему) user), перенаправить запрос на конечную точку # 3
    • Endpoint # 2: возвращает данные для зарегистрированного пользователя <= <strong>Эта конечная точка защищена.
    • Конечная точка № 3: возвращает данные для посетителя <= <strong>Эта конечная точка не защищена.

Сводка: конечная точка для обработки первоначального запроса не должна быть защищена , Просто считайте безопасным запрос / обработку возвращаемых данных пользователя, выполнившего вход / посетителя.

...