Несколько типов грантов для одного клиентского приложения с помощью Spring Boot Security - PullRequest
0 голосов
/ 06 марта 2020

Я программирую клиент (приложение 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 .

Я прочитал документацию, но, думаю, я направился в неправильном направлении. Можете ли вы дать мне несколько советов?

Я читал этот комментарий: Spring Boot Oauth2 использует несколько grant_types для одного и того же URL-адреса В котором намек на то, что мне нужны две разные конфигурации безопасности с разными отображение, но я не знаю, как это сделать.

Я прочитал это: Как я могу реализовать аутентификацию Basi c с аутентификацией JWT в Spring Boot? но я не не вижу, как установить два разных типа грантов.

И из-за этого я не уверен, что это вообще возможно: https://github.com/spring-projects/spring-boot/issues/14554

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...