При попытке заставить Spring Security OAuth2 5.4.2 работать с настраиваемыми областями и Auth0 в потоке кода авторизации. Я наткнулся на небольшую деталь, для которой у меня нет простого решения.
Чтобы запросить настраиваемые области действия, Auth0 требует, чтобы пользователь предоставил параметр audience . URI перенаправления создается в org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizationRequestResolver#resolve(javax.servlet.http.HttpServletRequest, java.lang.String, java.lang.String).
Этот процесс можно изменить с помощью AuthorizationRequestCustomizer, однако я не вижу никаких средств для внедрения настройщика, а DefaultOAuth2AuthorizationRequestResolver не зарегистрирован как bean-компонент или, по крайней мере, я не понимаю, как он доступен.
Это довольно просто воспроизвести: попробуйте получить доступ к пользовательской области, созданной для API, настроенного в Auth0, например. что-л. например, «создать: проекты». Теперь попробуйте использовать эту область через поток кода авторизации. Это не сработает, поскольку для Auth0 требуется параметр запроса &audience=<<api_name>>, который Spring Security не может предоставить без AuthorizationRequestCustomizer исправления запроса. Проблема не в том, что я не могу настроить Auth0, а в том, что я не могу использовать настраиваемые области.




Вы можете реализовать собственный OAuth2AuthorizationRequestResolver, а затем добавить его в конфигурацию безопасности spring.
.oauth2Login(req->
req.authorizationEndpoint()
.authorizationRequestResolver(new YourCustomAuthorizationRequestResolver)
)
К сожалению, это не простой способ просто установить AuthorizationRequestCustomizer, вместо этого мне пришлось заменить весь authorizationRequestResolver, получив ClientRegistrationRepository и базовый URI запроса авторизации. С параметризованным DefaultOAuth2AuthorizationRequestResolver с использованием authorizationRequestResolver.setAuthorizationRequestCustomizer(b -> b.additionalParameters(Map.of("audience", "http://localhost:8080/")));
Не могли бы вы предоставить больше информации о проблеме? Я знаю, нет проблем с настройкой Auth0 в Spring Security.