Bonjour,

Je suis actuellement entrain de travailler sur la partie authentification d'une application web utilisant Spring Security. J'essaye d'ajouter une autre url de connexion pour que le web services soit utiliser au mieux par une application mobiles (c'est a dire sans retour de code html par exemple et donc le customize). Cependant je souhaite garder la première url intact pour la connexion a l'application via un navigateur web. J'ai donc fait ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MultiHttpSecurityConfig {
 
	@Configuration
	@Order(1)
	public static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 
		@Autowired
		private CustomAuthenticationProvider customAuthenticationProvider;
 
		@Override
		public void configure(AuthenticationManagerBuilder auth) throws Exception {
			auth.authenticationProvider(customAuthenticationProvider);
		}
 
		@Override
		protected void configure(HttpSecurity http) throws Exception {
 
			http.authorizeRequests()
				.antMatchers("/chat/**")
					.permitAll()
				.antMatchers("/service/boite_idee_note/**", "/service/atelier_vote/**", "/service/equipe/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPER_ADMIN')")
				.antMatchers("/", "/Repository/**", "/uploadFile", "/uploadPdf", "/uploadLogo","/upload_nouveau_venu", "/service/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPER_ADMIN')")
				.and().formLogin().loginPage("/login")
				.and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).csrf()
					.ignoringAntMatchers("/chat/**")
					.csrfTokenRepository(this.csrfTokenRepository());
		}
 
		/**
                 * @return
                 */
		private CsrfTokenRepository csrfTokenRepository() {
			HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
			repository.setHeaderName("X-XSRF-TOKEN");
			return repository;
		}
 
 
	}
 
	@Configuration
	@Order(2)
	public static class WebSecurityConfigAppMobile extends WebSecurityConfigurerAdapter {
 
		@Autowired
		private CustomAuthenticationProvider customAuthenticationProvider;
 
		@Override
		public void configure(AuthenticationManagerBuilder auth) throws Exception {
			auth.authenticationProvider(customAuthenticationProvider);
		}
 
		@Override
		protected void configure(HttpSecurity http) throws Exception {
 
			http.formLogin()
	            .loginPage("/loginMobile")
	            .and().logout()
				.and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).csrf()
					.csrfTokenRepository(this.csrfTokenRepository());
		}
 
		/**
                 * @return
                 */
		private CsrfTokenRepository csrfTokenRepository() {
			HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
			repository.setHeaderName("X-XSRF-TOKEN");
			return repository;
		}
	}
}
Le problème c'est lorsque je fait une requête sur l'url /loginMobile, je reçoit une erreur 404 de la part du serveur. J'ai l'impression que le second adaptater n'est pas pris en compte.

Je voudrais donc savoir si je m'y prends de la bonne façon.

Merci pour votre aide