Fala Jorge, tudo bem?
Se o seu swagger for acessado dentro de alguma aplicação, você pode configurar uma feature de segurança restringindo a URL e requisitando um usuário e senha, com o spring-security, um exemplo:
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/swagger-resources/*", "*.html", "/api/v1/swagger.json")
.hasRole("SWAGGER")
.anyRequest()
.authenticated()
.and()
.httpBasic()
.and()
.csrf().disable();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("admin").authorities("SWAGGER");
}
}
Uma outra alternativa é fazer utilizando o próprio web server onde está hospedada a página. Por exemplo, no nginx você poderia adicionar uma autenticação HTTP básica para a página (a qualquer momento que alguém acessar a sua url ou subdomínio de documentos, receberá uma caixa de diálogo de usuário / senha antes de poder acessar o swagger-ui): https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
Abraço!