У меня есть Backend REST Services / API, которые должны быть защищены через среду Spring-Security.
Каждый запрос запроса должен быть аутентифицирован + авторизован.
1. Аутентификация (без имени пользователя и пароля):
- В клиентском запросе НЕ будет указано имя пользователя и пароль.
- Клиентский запрос пройдет токен доступа в качестве заголовка-параметра. Мое приложение извлечет этот токен и вызовет стороннюю систему для его проверки. (предположим, что это будет система проверки токенов. Каждый токен будет уникальным для каждого пользователя).
- Для каждого успешно подтвержденного токена сторонняя система ответит базовому c User_Details объекту ( user- ID , имя, фамилия и адрес электронной почты).
- идентификатор пользователя , извлеченный из объекта User_Details, будет использоваться для извлечения ролей из другого объекта Data- Исходная система.
2. Авторизация (на основе ROLE):
- На основании идентификатора пользователя , полученного из успешно проверенного токена, My Application вызовет другую службу источника данных для получения ролей. (предположим, что это будет система источника данных RBA C, которая предоставит список ролей для заданного идентификатора пользователя действительного токена)
- Проверенный пользователь токена должен принадлежать к одной из разрешенных ролей для доступа к My API для приложений: «ADMIN», «USER», «MANAGER» и т. Д. c. Разрешенные роли)
Проблема:
Как настроить реализацию Spring-Security таким образом, чтобы она удовлетворяла вышеуказанному упомянутые критерии ??
Какой интерфейс я должен использовать (или расширить), чтобы убедиться, что мне не нужно передавать имя пользователя и / или пароль в качестве параметров ?? Вместо этого будет достаточно только аутентификации на основе токенов.
Кроме того, где я должен действительно включить изменения, связанные с ролями, чтобы они отражались для роли авторизации? проверки и входящий запрос / вызов API будут ограничены на основе разрешенных ролей ??