2

Ich habe eine Demo-Anwendung mit Spring Boot und oauth2 entwickelt. Ich habe drei Anwendungen wie unten.Swagger wird nicht mit Oauth2 geladen

  1. Ressource API: Dies wird alle die Methode haben, die wir sichern müssen.
  2. Authentifizierungsserver: Dies ist ein OAuth2-Server, der die Token
  3. UI bietet, die nach erfolgreicher Anmeldung über den Authentifizierungsserver auf Ressourcen zugreifen können.

Ich habe wenige Ressourcen (Controller), die öffentlich zugänglich sind. Aber wenn ich versuche, auf den Swagger ui zuzugreifen, fragt er mich nach der vollen Authentisierung. Als ich den untenstehenden Code hinzugefügt habe, kommt die Swagger-Seite, aber nicht nur ein Dropdown-Menü auf der ganzen Seite und das ist auch kaputt.

http 
.anonymous() //allow anonymous access 
.and() 
.authorizeRequests() 
.antMatchers("/shouldbepublic/**", "/swagger-ui**/**").permitAll().and() //this should be public resources 
.formLogin().loginPage("/login").permitAll() 
.and() 
.requestMatchers().antMatchers("/login", "/oauth/authorize", "/oauth/confirm_access") 
.and() 
.authorizeRequests().anyRequest().authenticated(); 
+0

Verwenden Sie Springfox-Swagger-Ui als Abhängigkeit? –

Antwort

0

Hier ist eine Konfiguration, die für mich funktioniert:

.antMatchers("/swagger-ui.html","/swagger-resources/**", "/v2/api-docs/**").permitAll()'.antMatchers("/swagger-ui.html","/swagger-resources/**", "/v2/api-docs/**").permitAll()

, dass ohne die Prahlerei-ui.html nicht

Der komplette ResourceServiceConfiguration finden Sie hier angezeigt werden kann:

@Configuration 
@EnableResourceServer 
public static class ResourceServiceConfiguration extends ResourceServerConfigurerAdapter { 

    @Override 
    public void configure(final HttpSecurity http) throws Exception { 
    // @formatter:off 
    http.csrf().disable().authorizeRequests() 
    // This is needed to enable swagger-ui interface. 
    .antMatchers("/swagger-ui.html","/swagger-resources/**", "/v2/api-docs/**").permitAll() 
    .antMatchers("/**").hasAuthority("ADMIN"); 
    // @formatter:on 
    } 
} 
0

Eine weitere Option (wenn es für Sie sicher ist) ist Spring Security vollständig ignoriert den /swagger-ui Weg zu haben.

In Ihrer Sicherheit @Configuration Datei WebSecurityConfigurerAdapter erweitern und fügen Sie den folgenden:

@Override 
public void configure(WebSecurity web) throws Exception { 
    web.ignoring().antMatchers(HttpMethod.GET, "/swagger-ui/**"); 
    super.configure(web); 
} 
+0

Danke Marco, ich werde versuchen es euch wissen zu lassen! – Sam

0

Wenn Sie Swagger2 versuchen verwenden ermöglicht:

http.authorizeRequests().antMatchers("/configuration/**","/swagger**","/webjars/**","/v2/**").permitAll(); 

es zum Laufen zu bringen.