Я много читал об этом здесь и других статьях. Сначала позвольте мне объяснить мою ситуацию.Как защитить мой REST api, разработанный в playframework
Скажем, у меня есть следующий REST бэкенд:
GET /user
возвращает все пользователи в формате JSON. (Не нужно регистрироваться)
POST /user
регистрирует нового пользователя. (Не нужно регистрироваться)
DELETE /user
удаляет пользователя. (Вы do необходимо войти в систему)
POST /login
имеет регистрационные данные и возвращает 200 подтверждений успешной аутентификации. Также это создает session
с username
.
DELETE /login
Выход из системы, это удаление сеанса.
Для аутентификации пользователей и ролей я использую Deadbolt-2 так, например, когда DELETE /user
называется сначала session
будет рассматриваться, чтобы определить, является ли вы вошли в систему и затем username
используется, чтобы определить, если у вас есть необходимые разрешения.
. Мой вопрос не в том, что такое авторизация/аутентификация. Это, однако, примерно следующее:
Я хочу, чтобы обеспечить «общественность» API вызовы, такие как: GET /user
в пути, так что только интерфейсные приложения, которые одобрены меня может получить доступ к ним.
Я много читал о api-keys и HMAC и oAuth. Но мне кажется, что речь идет о первом сценарии, а не о втором. Итак, как бы я это сделал в своей ситуации?
Спасибо за ваше время.
Логины и предоставление доступа только для одобренных клиентов _sort того же thing_. Вы должны сохранить список всех одобренных клиентов. Как еще вы узнаете, может ли клиент получить доступ к вашему API? Кроме того, клиент должен как-то идентифицировать себя. Этот процесс идентификации должен содержать _a secret_ между вами и клиентом. В противном случае, что мешает мне сказать вам: «Привет, я клиент XY, gimme API!» _, Хотя я не в вашем списке. Это (на базовом уровне), эквивалентное логину с именем пользователя/пароля. Или выдавать «ключи API». – Carsten
Итак, я должен реализовать дополнительный базовый уровень авторизации ниже тех, которые у меня есть прямо сейчас, чтобы мой front-end автоматически включался в систему? – Jim