Spring-Boot-Sicherheit mit OAuth2 Login-Formular

Ich bin nach Teil V Erste Schritte mit Spring Boot Security zum sichern meiner Erholsamen microservices.

Den einfachen flow, dass ich vorhabe zu realisieren ist:-

  1. Wenn nicht authentifiziert, wird der Benutzer umgeleitet, um eine benutzerdefinierte login-Seite
    sagen Sie '/login'.

  2. Benutzer gibt seine Anmeldeinformationen.

  3. Auf eine erfolgreiche Authentifizierung der Benutzer gelangt zur Startseite
    ('/home'). Ich sollte in der Lage sein, um Zugriff auf meine REST-Endpunkt (hinter einem
    Zuul Proxy-Server) nach der Bereitstellung der access-token in der Anfrage.

Den Erste-Schritte-Handbuch in den oben genannten link mit Basic-Auth und dummy-Benutzer konfiguriert .Eigenschaften oder .yml-Datei.

Dies ist, wie ich versucht mit meiner Konfiguration:-

@Configuration
@EnableAuthorizationServer
public class OAuth2Config extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory().withClient("acme").secret("acmesecret")
                .authorizedGrantTypes("authorization_code", "refresh_token", "password").scopes("openid")
                .accessTokenValiditySeconds(3600);
    }

    @Override
    public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
        oauthServer.tokenKeyAccess("isAnonymous()").checkTokenAccess("isAnonymous()")
                .allowFormAuthenticationForClients();
    }

}



@Configuration
@Import({ OptoSoftSecurityServiceConfig.class })
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService; //backed by MongoDB

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().disable().formLogin();//disabled basic auth and configured to use dafault Spring Security form login.
    }
}

Schlagen die authorization-Endpunkt leitet mich auf 'http://localhost:9999/uaa/login' mit Fehlermeldung, wie:-

<oauth>
<error_description>
Full authentication is required to access this resource
</error_description>
<error>unauthorized</error>
</oauth>

PROBLEM

  1. Wie kann ich konfigurieren der Autorisierungs-Server zu verwenden UserDetailsService
    statt statischer Benutzer und verwenden Sie Formular-Login statt Basic Auth.

  2. Wie kann ich die Automatische Genehmigung konfigurieren während der Verwendung von 'authorization_code'
    da die Finanzhilfe geben?

  3. Ist es zwingend erforderlich für /oauth/autorisieren Endpunkt geschützt werden
    Basic Auth? Warum "Full-Authentifizierung erforderlich', um den Zugriff auf die
    /oauth/autorisieren " endpoint. Ich glaube, dass wir nicht wissen, wer der Benutzer
    vor diesem Endpunkt. Der Benutzer kann nur identifiziert werden, wenn er
    authentifiziert sich mit gültigen Anmeldeinformationen, die kommt nach der form
    login.

Schreibe einen Kommentar