Printemps de Démarrage de Sécurité OAuth2 avec le Formulaire de Connexion
Je suis La partie V de la mise en route avec le Printemps de Démarrage de Sécurité pour sécuriser mon Reposant microservices.
Le simple passage que j'ai l'intention de mettre en œuvre:-
- Si non authentifié, l'utilisateur est redirigé vers une page de connexion personnalisée
dire "/login". - Utilisateur fournit ses informations d'identification.
- Sur la réussite de l'authentification de l'utilisateur est redirigé vers la page d'accueil
('/home'). Je devrais être en mesure d'accéder à mon point de terminaison REST (derrière un
Zuul Serveur Proxy) après le jeton d'accès dans la demande.
Le guide de mise en route dans le mentionné ci-dessus lien utilise l'Authentification Basique et mannequin configuré par l'utilisateur .propriétés ou .fichier yml.
C'est la façon dont j'ai essayé avec ma configuration:-
@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.
}
}
Frapper le l'autorisation d'extrémité me redirige vers 'http://localhost:9999/uaa/login' avec le message d'erreur comme:-
<oauth>
<error_description>
Full authentication is required to access this resource
</error_description>
<error>unauthorized</error>
</oauth>
PROBLÈME
- Comment puis-je configurer le Serveur d'Autorisation pour l'utilisation UserDetailsService
au lieu de statique de l'utilisateur et d'utiliser le Formulaire de Connexion au lieu de l'Authentification Basique. - Comment puis-je configurer d'Approbation Automatique lors de l'utilisation de "authorization_code'
comme le type de subvention? - Est-il obligatoire pour /oauth/autoriser un point de terminaison d'être protégé par
Basic Auth? Pourquoi " l'authentification est requise pour accéder à la
/oauth/autoriser l'ordinateur d'extrémité. Je crois que nous ne savons pas qui est l'utilisateur
avant ce point de terminaison. L'utilisateur ne peut être identifié, une fois qu'il a
été authentifiés à l'aide des informations d'identification valides qui vient après la forme
connexion.
OriginalL'auteur Kumar Sambhav | 2015-07-18
Vous devez vous connecter pour publier un commentaire.
A finalement obtenu ce travail. Le repo git dans ce blog avait déjà une chose configuré. Il s'avère que c'était assez simple.
C'est ce qui a fonctionné pour moi (j'ai aussi configuré d'approbation automatique à true):-
application.yml:-
Salut Kumar, le dépôt github n'est pas trouvé. Pourrais-je avoir le code source ?
Vous pouvez soit caisse de la mine: github.com/ksambhav/trueyes ou Daye Syer du guide de Ressort: github.com/spring-guides/tut-spring-security-and-angular-js/...
OriginalL'auteur Kumar Sambhav