Salut,
je n'arrive pas à me connecter à mon application. je reçois un message 401 full authentication is required to access this resource à chaque essaie.
Voici mes ressources :
Application Properties :
AuthorizationServerConfig
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
76
77 security.oauth2.resource.id: ed server: ssl: key-store-type: PKCS12 key-store: classpath:server.p12 key-store-password: ed19 key-alias: edpi port: 8443 key-password: edasta19 security: require-ssl=true: spring: datasource: platform: mysql url: jdbc:mysql://localhost:3306/edas19?serverTimezone=UTC&useLegacyDatetimeCode=false username: root password: '#L8#' tomcat: test-while-idle: true validation-query: SELECT 1 initialization-mode: never sql-script-encoding: UTF-8 jpa: show-sql: true generate-ddl: true open-in-view: false hibernate.ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.MySQL5Dialect jackson: mapper: default_view_inclusion: true serialization: indent_output: true write_dates_as_timestamps: false deserialization: fail_on_ignored_properties: false fail_on_unknown_properties: false accept_single_value_as_array: true default-property-inclusion: non_empty date-format: com.fasterxml.jackson.databind.util.ISO8601DateFormat #joda-date-time-format: yyyy-MM-dd HH:mm:ss mail: host: smtp.gmail.com port: 587 username: edd@gmail.com password: '#l5#' properties: mail: transport.protocol: smtp smtp: auth: true starttls.enable: true timeout: 5000 writetimeout: 5000 connectiontimeout: 5000 #debug: true #test-connection: true keystore: jwt: key-store: classpath:server.jks key-store-password: ed19 key-pair-alias: edpi key-pair-password: ed19 public-key: classpath:public.txt uuidd: ${random.uuid} password: edasta19 value: ${random.value} upload-dir: /var/www/uploads purge: cron.expression: 0 0 5 * * ?
SERVEUR DE RESSOURCES :
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 @Configuration @EnableOAuth2Client @EnableAuthorizationServer public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { @Value("${resource.id:edastapi}") private String RESSOURCE_ID; @Value("${keystore.jwt.key-pair-alias}") private String KEY_PAIR_ALIAS; @Value("${keystore.jwt.key-store-password}") private String KEY_STORE_PASS; @Value("${jwt.authorizedGrantTypes:password" + ",authorization_code" + ",refresh_token}") private String[] AUTHORIZED_GRANTYPES; private final static Integer RESOURCE_VALIDITY = 60*60; private final PasswordEncoder encoder; private final PersonneService service; private final AuthenticationManager manager; public AuthorizationServerConfig( PasswordEncoder encoder, PersonneService service, AuthenticationManager manager) { this.encoder = encoder; this.service = service; this.manager = manager; } @Bean public TokenStore tokenStore() { return new JwtTokenStore( tokenEnhancer() ); } @Bean public JwtAccessTokenConverter tokenEnhancer() { JwtAccessTokenConverter tokenConverter = new JwtAccessTokenConverter(); KeyStoreKeyFactory factory = new KeyStoreKeyFactory( new ClassPathResource("server.jks"), KEY_STORE_PASS.toCharArray() ); tokenConverter.setKeyPair(factory.getKeyPair(KEY_PAIR_ALIAS)); DefaultAccessTokenConverter converter = new DefaultAccessTokenConverter(); DefaultUserAuthenticationConverter authConverter = new DefaultUserAuthenticationConverter(); authConverter.setUserDetailsService(service); converter.setUserTokenConverter(authConverter); tokenConverter.setAccessTokenConverter(converter); return tokenConverter; } @Override public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { security.tokenKeyAccess("permitAll()") .checkTokenAccess("isAuthenticated()");//security.allowFormAuthenticationForClients(); } @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory() .withClient("ed").resourceIds(RESSOURCE_ID) .authorizedGrantTypes(AUTHORIZED_GRANTYPES) .scopes("openid", "profile", "email", "read", "write") .secret(encoder.encode("1234")).autoApprove(true) // .secret("secret").autoApprove(true) .accessTokenValiditySeconds(RESOURCE_VALIDITY).refreshTokenValiditySeconds(2*RESOURCE_VALIDITY); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) { endpoints .accessTokenConverter(tokenEnhancer()) .authenticationManager(manager).userDetailsService(service) .tokenStore(tokenStore()).tokenServices(tokenServices()); } @Bean @Primary public DefaultTokenServices tokenServices() { DefaultTokenServices services = new DefaultTokenServices(); services.setTokenEnhancer(tokenEnhancer()); services.setAuthenticationManager(manager); services.setSupportRefreshToken(true); services.setTokenStore(tokenStore()); return services; } }
WebSecurity
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 @Configuration @EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Autowired private ResourceServerTokenServices tokenServices; @Value("${security.oauth2.resource.id}") private String RESSOURCE_ID; @Override public void configure(ResourceServerSecurityConfigurer resources) { resources.resourceId(RESSOURCE_ID).tokenServices(tokenServices);; } @Override public void configure(HttpSecurity http) throws Exception { http /* .cors().and().csrf().disable().httpBasic().disable().headers().frameOptions().disable().and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() .authorizeRequests() .antMatchers("/me").permitAll() .anyRequest().authenticated().and() .exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler()); */ .cors().and().csrf().disable().httpBasic().disable().headers().frameOptions().disable().and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() .authorizeRequests().anyRequest().authenticated().and() //.antMatchers("/oauth/register", "/oauth/enable", "/operations/bondast", "/about").permitAll().antMatchers("/ross/**").access("hasRole('ADMIN') and hasRole('USER')").antMatchers("/admin/**").hasRole("ADMIN") .exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler()); } }
Je vous prie de m'aider SVP
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 @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private PersonneService service; @Bean public static PasswordEncoder encoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } @Bean @Override protected AuthenticationManager authenticationManager() throws Exception { return super.authenticationManager(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(service).passwordEncoder(encoder()); } @Override protected void configure(HttpSecurity http) throws Exception { super.configure(http); http.requiresChannel().anyRequest().requiresSecure(); } }
Partager