Как получить доступ к пользовательскому интерфейсу Swagger или как исключить пользовательский интерфейс Swagger из сервера ресурсов, если он интегрирован с сервером авторизации
Я реализовал микросервис сервера авторизации (auth-service) со стандартами oauth2 и OpenId для аутентификации и авторизации, используя новую версию безопасности весенней загрузки 3.2. Также я реализовал еще один микросервис (api-сервис) для Resource Server с помощью Swagger v3. Все защищенные ресурсы присутствуют в этом микросервисе. Для доступа к этим защищенным ресурсам с сервера ресурсов (API-сервиса) я использую токен доступа (JWT), который генерируется службой аутентификации. Проблема в том, что я исключил конечные точки, связанные с swagger, из системы безопасности, но получаю несанкционированный ответ, а пользовательский интерфейс swagger вообще не загружается. Если кто-нибудь знает, как это решить, пожалуйста, дайте мне знать. Я пробовал несколько вещей, но это не работает.
Ниже приведена моя конфигурация Yaml и сервера ресурсов.
КОНФИГУРАЦИЯ YAML:
ведение журнала: уровень: корень: ИНФОРМАЦИЯ org.springframework.web: DEBUGorg.springframework.security: DEBUGorg.springframework.security.oauth2: DEBUG
весна: безопасность: oauth2: сервер ресурсов: jwt: Issuer-uri: http://localhost:8089jwk-set-uri: http://localhost:8089/oauth2/jwks
КОНФИГУРАЦИЯ РЕСУРСНОГО СЕРВЕРА:
@Value("${server.servlet.context-path}")
private String contextPath;
/**
* Publicly accessible urls i.e., not secured url, auth service will ignore this URLs
*
* @return String[] of urls
*/
private String[] publicAPI() {
return Stream.of(
"/css/**",
"/api-docs/**",
"/swagger-ui/**",
"/configuration/ui",
"/swagger-resources/**",
"/configuration/security",
"/swagger-ui.html",
"/webjars/**",
"/v3/api-docs",
"/swagger-resources/**",
"/*/swagger-resources/**",
"/*/v3/api-docs"
).toArray(String[]::new);
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrf -> csrf
.ignoringRequestMatchers(publicAPI())
).authorizeHttpRequests(authorize -> authorize
.requestMatchers(publicAPI()).permitAll()
).oauth2ResourceServer(resourceServer ->
resourceServer.jwt(Customizer.withDefaults())
);
return http.build();
}
Спасибо.