У меня есть следующие настройки:
- Центральный сервер авторизации, написанный с пружинной загрузкой, который работает в данный момент (я могу свернуться и получить токен доступа, хранилище токенов jdbc и т. Д.)
- Несколько приложений, принадлежащих одному разработчику, совместно использующих одну и ту же клиентскую базу в разных доменах.IE: John Doe для app1 - это то же самое, что John Doe для app2.
У меня есть существующее приложение (app1 выше), которое является jsf 2.2 с пружинной защитой, настроенной для целей входа в систему.Это приложение сейчас работает автономно, со своей собственной базой пользователей.
Это поток, который я пытаюсь получить: Учетная запись пароля владельца ресурса OAuth Flow
Итак, мыхотел бы:
- Пользователь заходит в приложение 1
- Пользователь вводит пользователя и пароль на страницу входа в приложение 1
- Пользователь нажимает кнопку "войти"
- В некотором родеКонфигурация в Spring будет принимать запрос loginByUsername, получать токен доступа с центрального сервера oauth
- Теперь у нас есть доступ к app1 - у пользователя может быть одна из трех ролей (ADMIN, USER, SUPERUSER).
- Когда они зайдут (скажем) в app1 / views / createEntry.xhtml, мы подтвердим, что токен доступа, который у нас есть, все еще активен на сервере аутентификации.
- Сервер ресурсов технически будет ресурсами на сервере app1 (верно?)
Я новичок в этом процессе oauth2.0 (и действительно весной), но я думаю,это поток, который я хочу.Как мне настроить это с помощью Spring Security?Я видел параметр безопасности с именем oauth2login (), который, как мне кажется, мы МОЖЕМ желать, но я думаю, что это больше потока кода авторизации.
Я не нашел очень хороший пример этого с использованием пароляпоток.
Я доверяю каждому из приложений в этом процессе, следовательно, поток паролей.Мы контролируем сеть, которая поддерживает трафик между сервером авторизации и другими приложениями.
Редактировать : SSO не подходит из-за требований и нашей клиентской базы.Приложения настолько уникальны, что это не имеет смысла, но пользователь должен иметь возможность войти в любое из наших приложений с этими учетными данными.
Edit 2 : Извините за второе редактирование.Я хотел бы добавить, что я добавил конфигурацию ресурса в app1, и на самом деле кажется, что она работает - я что-то защитил / views / *, и когда я пытаюсь перейти на их, я получаю ожидаемое сообщение «Требуется полная аутентификация».
Редактировать 3 : Я думаю, что я добился определенного прогресса -
Сначала я создал компонент Spring, который реализует AuthenticationProvider, а затем переписал метод authenticate, чтобы я создалобъект ResourceOwnerPasswordResourceDetails со всеми моими свойствами (идентификатор клиента, секрет клиента, тип предоставления, область и т. д.) и вызвал сервер авторизации для получения токена.Я был очень рад видеть, как обновляется мой журнал для сервера авторизации.
Следующий шаг, который мне нужно выяснить, - это как создать расширение org.springframework.security.core.userdetails.User, чтобы я мог сохранитьпривилегии для пользователя.
Также - я пока не могу понять, как хранится токен.Я знаю, что сервер аутентификации генерирует токен и сохраняет его в jdbc, но где / как токен хранится на стороне клиента?