Стратегия аутентификации API - PullRequest
0 голосов
/ 03 ноября 2019

Аутентификация API

Я вижу разрешение аутентификации и авторизации входящего вызова API в виде трехкратного ввода

  1. principal например Bearer токен вAuthentication header.
  2. HTTP verb например, req.method в Express
  3. Resource например, req.originalUrl в Express

и вывод в виде trueили false. Тогда возникает вопрос, как выглядит система, которая соответствует этому разрешению и методам жизненного цикла вокруг перестановок 3-кортежа? Давайте назовем эту систему AAS (Служба аутентификации и авторизации).

Вариант 1 - AAS, предоставляемый извне

Как разработчик API, я мог бы вызывать вызовы API на моем сервере API после он был успешно аутентифицирован AAS. 3-кортеж будет обработан AAS. В случае неудачной аутентификации AAS отправляет код состояния HTTP 401. Таким образом, вызовы API в первую очередь затрагивают AAS - всегда .

Вариант 2 - пользовательская сборка AAS

Как разработчик API, я владею AAS таким образом, что мой сервер APIполучает вызов , а также оценивает доступ. Суть этого подхода заключается в том, что мне нужно организовать жизненный цикл трехкомпонентного кортежа, о котором я упоминал выше и , - оценку контроля доступа. Например, я должен спроектировать подключение нового потребителя API, а также оценить его вызовы.

Вопросы

Например, чисто с точки зрения JWT (давайте оставим в стороне Плохое нажатие на JWT на мгновение), 3-кортеж, вероятно, претензии. С вариантом 1, я ожидаю выдачи, модификации и истечения срока действия JWT с AAS. С вариантом 2 мне придется владеть жизненным циклом.

Для оценки контроля доступа, с Вариантом 1, я ожидаю вызова моего сервера API от AAS. С вариантом 2 я ожидаю использовать что-то вроде passport.js для оценки запроса доступа.

Я читал о Gluu , Keycloak и FreeIPA. Кроме того, существуют облачные решения. Возможно, я не правильно понимаю, но не могу найти четкого ответа, как эти решения (я даже пробовал изолированную программную среду FreeIPA - https://www.freeipa.org/page/Demo) можно использовать для любого из указанных выше вариантов.

Например, может ли Gluu управлять жизненным циклом JWT? Как разработчик API, могу ли я вызвать Gluu для оценки контроля доступа (возможно, passport.js)?

...