Я просмотрел много постов и статей, но не нашел простого решения для случая, ниже которого я должен реализовать.
Платформа: Spring Boot 2.x.x (Spring Security 5.x.x) с встраиванием Tomcat
Решение: Служба REST, которая использует много клиентских приложений и множество конечных пользователей.
Я должен реализовать конечную точку REST /api/search
, которая доступна для многих клиентских приложений. В качестве примера можно привести веб-приложение APP-X (Angular), веб-приложение APP-Y (Jquery / Bootstrap) и мобильное приложение APP-Z (IOS). Все три клиента являются отдельными лицами (как с технической точки зрения, так и с точки зрения бизнеса).
Так что я должен аутентифицировать вышеуказанное приложение, используя одноразовый токен. Поэтому я планировал перейти на Spring OAuth2, включив @EnableAuthorizationServer
и @EnableResourceServer
. Для каждого клиента приложения я сгенерирую токен, и они смогут использовать его при подключении к моей службе REST. Является ли этот подход правильным?
Помимо клиентских приложений, система имеет возможность регистрации и входа в систему для конечных пользователей. Также моя конечная точка (/api/search
) может получить доступ как к анонимным пользователям, так и к пользователям, которые зарегистрированы под ролью ROLE_REGUSER
. А через контекст безопасности мне нужно получить доступ к данным пользователя, как при обычной аутентификации пользователя.
Это место, где я застрял. Как я могу обрабатывать следующие моменты вместе, используя Spring Security 5.x.x (Spring Boot 2.x.x).
I. И клиентские приложения, и аутентификации конечных пользователей.
II. Разрешить доступ для анонимных пользователей и зарегистрированных пользователей для одной и той же конечной точки.
Я приложил небольшую диаграмму для уточнения вышеописанного сценария.
Спасибо