Я разрабатываю приложение для весенней загрузки, в котором пользователи могут зарегистрироваться в системе, предоставив необходимую информацию. Платформа должна предоставлять пользователям возможность аутентификации с помощью зарегистрированных учетных данных пользователя или учетных данных для входа в социальные сети (google/Facebook).
Для простой аутентификации пользователя я хочу создать простой почтовый запрос на сервер с именем пользователя и паролем, и после проверки сервер возвращает токен. Я не хочу использовать здесь форму входа в систему безопасности Spring.
Но для логики социальных сетей я считаю, что должен использовать oAuth.
Я новичок в Spring Boot и Spring Security. Нужно ли мне интегрировать аутентификацию JWT и аутентификацию OAuth для этого сценария? Предложение будет высоко оценено
Что ты. описание управления пользователями (регистрация пользователей, вход в систему, выход из системы) являются стандартными функциями серверов авторизации OAuth2/OpenID. Вы должны выбрать один «с полки» либо в помещении (например, Keycloak), либо в облаке (например, Auth0, Amazon Cognito и многие другие). Многие решения включают федерацию «социальных» удостоверений.
REST API — это серверы ресурсов. См. эти руководства для настройки безопасности и тестов с фиктивными удостоверениями.
Пользовательские интерфейсы — это клиенты. Вы должны использовать клиентскую библиотеку OAuth2 для обработки потоков OAuth2. Найдите один для своей платформы Spring имеет одну, если ваш пользовательский интерфейс создается на сервере с Thymeleaf или подобным, но есть библиотеки для Angular, React и других фреймворков, работающих в браузерах.
Клиентские библиотеки Spring OAuth2 также можно использовать в сценарии BFF (бэкенд для внешнего интерфейса), когда клиент браузера не является OAuth2 (он защищен сеансом, а не токеном доступа) и общается с приложением на сервере, который является клиентом OAuth2 ( spring-cloud-gateway
— это образец, но вы также можете написать собственное приложение с помощью spring-boot-starter-oauth2-client
). Это приложение переводит запрос с сеансом в запрос с токеном доступа, прежде чем перенаправить его на сервер ресурсов. Цель состоит в том, чтобы скрыть токены от Javascript в браузере.
Вы используете структуру, такую как проект сервера авторизации Spring, и заново изобретаете колеса (социальный вход, экраны управления ролями, подключение к LDAP, многофакторная аутентификация и т. д.). Это будет намного больше работы, чем вы можете себе представить (и невероятно больше, чем настройка экземпляра Keycloak).
Спасибо за ваш ответ. Это действительно полезно. Что, если я хочу внедрить свой собственный сервер аутентификации и авторизации (вместо использования стороннего поставщика) отдельно от входа в социальные сети? В таком случае, как я могу справиться со сценарием? Позвольте мне прояснить это подробнее 1. Мой собственный сервер аутентификации и авторизации (без стороннего поставщика) 2. Вход в социальные сети Как это возможно с одним приложением Spring Boot?