Я программирую клиент (приложение Spring Boot), который должен предоставить две конечные точки для пользователя, одна из которых использует грант кода авторизации, а другая использует грант учетных данных владельца ресурса. Конечные точки находятся на разных URL-адресах. Другой будет использоваться внутренним приложением, поэтому я не беспокоюсь о безопасности.
У меня есть внешний сервер OAuth2 (как сервер авторизации, так и сервер ресурсов), поэтому я не программирую их, но у меня есть полный доступ к их конфигурации. Keycloak находится под вопросом.
Мне удалось настроить Предоставление кода авторизации, но я не могу заставить работать другой.
Мой application.yml выглядит примерно так:
security:
oauth2:
resource:
token-info-uri: ...3rd party...
userInfoUri: ...3rd party...
client:
client-id: ...
client-secret: ...
grant-type: authorization_code
registered-redirect-uri: http://localhost:8080/app/auth_grant
pre-established-redirect-uri: http://localhost:8080/app/auth_grant/
user-authorization-uri: ...3rd party uri...
access-token-uri: ...3rd party uri...
scope:
- read
- write
- openid
У меня есть реализация WebSecurityConfigurerAdapter с аннотацией @EnableOAuth2Sso
@Configuration
, которая разрешает несанкционированный доступ только к /login.
Теперь я хочу, чтобы мои пользователи могли входить в систему с предоставлением учетных данных владельца ресурса (пример) /login_ROPCG.
Я прочитал документацию, но я думаю, что я двигался в неправильном направлении. Можете ли вы дать мне несколько советов?
Я прочитал этот комментарий: Весна Boot Oauth2 использует несколько Grant_types для одного и того же URL, в котором подсказка заключается в том, что мне нужны две разные конфигурации безопасности с разным сопоставлением, но я не знаю, как это сделать.
Я прочитал это: «>Как я могу реализовать обычную аутентификацию с аутентификацией JWT в Spring Boot? но я не вижу, как установить два разных типа гранта.
И из-за этого я не уверен, что это вообще возможно: https://github.com/spring-projects/spring-boot/issues/14554