Spring безопасность: как скрыть или обойти страницу «вход с помощью oauth2» с помощью одного клиента oauth при использовании oauth2Login

Я перехожу на последнюю весеннюю версию безопасности. Мой текущий проект использует устаревшую конфигурацию EnableOAuth2Sso со следующей конфигурацией. Всякий раз, когда я захожу на страницу /login своего приложения, оно автоматически перенаправляется на URL-адреса, указанные ниже (сайт SSO).

security.oauth2.client.accessTokenUri=http://localhost:8081/oauth/token
security.oauth2.client.userAuthorizationUri=http://localhost:8081/oauth/authorize
security.oauth2.resource.userInfoUri=http://localhost:8081/user

С последней версией Spring Security 6, используя oauth2Login, кажется, что теперь Spring хочет, чтобы я определил список регистраций клиентов. у меня есть что-то вроде этого

spring.security.oauth2.client.registration.myclient.client-id=...
spring.security.oauth2.client.registration.myclient.client-secret=...
spring.security.oauth2.client.registration.myclient.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.myclient.redirect-uri = {baseUrl}/login/oauth2/code/myclient
spring.security.oauth2.client.provider.myclient.authorization-uri=http://localhost:8081/oauth/authorize
spring.security.oauth2.client.provider.myclient.token-uri=http://localhost:8081/oauth/token
spring.security.oauth2.client.provider.myclient.user-info-uri=http://localhost:8081/user
spring.security.oauth2.client.provider.myclient.userNameAttribute=name

Кажется, я могу установить несколько клиентов oauth в своем приложении. Однако раздражает то, что если я перейду по URL-адресу /login, я увижу страницу входа, предоставленную Spring, с моим определенным клиентом oauth в качестве единственного варианта. Мой вопрос заключается в том, как я могу добиться предыдущего поведения, чтобы не показывать эту страницу и просто перенаправлять меня на сайт единого входа для входа в систему?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой: у вас есть интерфейс, который перенаправляет пользователя на URL-адрес, указанный ссылкой, обозначающей интересующий вас вариант входа в систему (вероятно, tools в вашем случае), а не на экран входа в систему (что-то вроде http://localhost:8080/oauth2/authorization/tools).

Значит, в новой весенней безопасности нет способа определить отдельного клиента? Это должен был быть список клиентов?

Fangming 04.06.2024 05:26

Регистрации клиентов представляли собой список, по крайней мере, начиная с Spring Security 5. Созданная по умолчанию страница входа в систему должна выполнять автоматическое перенаправление, когда есть только одна регистрация клиента с authorization_code, но это не работает, если, например, у вас есть http.oauth2Login(oauth2 -> oauth2.loginPage("...") в вашей конфигурации. Так что, не видя вашей конфы, сложно сказать, что происходит.

ch4mp 04.06.2024 07:31

Другие вопросы по теме