-
Partie 1 đź’Ż
- Télécharger Keycloak 19
- DĂ©marrer Keycloak
- Créer un compte Admin
- Créer une Realm
- Créer un client à sécuriser
- Créer des utilisateurs
- Créer des rôles
- Affecter les rĂ´les aux utilisateurs
- Avec PostMan :
- Tester l'authentification avec le mot de passe
- Analyser les contenus des deux JWT Access Token et Refresh Token
- Tester l'authentification avec le Refresh Token
- Tester l'authentification avec Client ID et Client Secret
- Changer les paramètres des Tokens Access Token et Refresh Token
-
Partie 2 đź’Ż -SĂ©curiser L'architecture Micro services Du projet Customer-service, Inventory-service et Order-service
- * KeyCloak est un produit logiciel open source pour permettre une connexion unique avec la gestion de l'identité et de l'accès destiné aux applications et services modernes. Depuis mars 2018, ce projet communautaire Wildfly est sous la gestion de Red Hat qui l'utilise comme projet en amont pour leur produit RH-SSO.
voir Ă©galement Ă propos Keycloakđź”—
Partie 1 :
- J'ai crée une image dans Docker pour démarrer le Keycloak:
la commande:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:20.0.1 start-dev
USER1 | USER2 | USER3 | |
---|---|---|---|
Création | |||
Password |
La liste des utilisateurs crées:
ROLE1 | ROLE2 | ROLE3 | |
---|---|---|---|
Création |
La liste des roles crées:
USER1 | USER2 | USER3 | |
---|---|---|---|
USER | |||
ADMIN | |||
MANAGER |
- Tester l'authentification avec le mot de passe
- Analyser les contenus des deux JWT Access Token et Refresh Token
1.Access Token:
- Analyse dans jwt.io :
2.Resfresh Token:
- Analyse dans jwt.io :
- Tester l'authentification avec le Refresh Token
- Tester l'authentification avec Client ID et Client Secret
- Changer les paramètres des Tokens Access Token et Refresh Token
-Paramétres de Access Token: date d'expiration: 10 min
-Paramétre de Refresh Token: date d'expiration: 59 min
-
Partie 2 :
- SĂ©curiser L'architecture Micro services Du projet Customer-service, Inventory-service et Order-service
-Ajout des dépendances:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>20.0.1</version>
</dependency>
- configuration de la sécurité de l'application
@Configuration //=> il permet de configurer la sécurité de l'application
public class KeycloakAdapterConfig {
@Bean
public KeycloakSpringBootConfigResolver keycloakConfigResolver(){ //=> il permet de dire au keycloak de lire le fichier application.properties
return new KeycloakSpringBootConfigResolver();
//=> tu vas se baser sur le fichier application.properties pour configurer keycloak et pas keycloak.json
}
/*@Bean
KeycloakRestTemplate keycloakRestTemplate(KeycloakClientRequestFactory keycloakClientRequestFactory){
return new KeycloakRestTemplate(keycloakClientRequestFactory);
}*/
}
@KeycloakConfiguration//=> @Configuration + @EnableWebSecurity + @EnableGlobalMethodSecurity(prePostEnabled = true)
//=> il permet de configurer la sécurité de l'application
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {//=> il permet de configurer la sécurité de l'application
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
//=> il permet de configurer la stratégie d'authentification
return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(keycloakAuthenticationProvider());
//=> ce n'est pas à moi de gérer les users et les roles
// on va déléguer l'authentification à un provider => à keycloak
}
@Override
protected void configure(HttpSecurity http) throws Exception {
//=> il permet de configurer les autorisations = les droits d'accès
super.configure(http);
http.csrf().disable();
http.authorizeRequests().antMatchers("/h2-console/**").permitAll();
http.headers().frameOptions().disable();
http.authorizeRequests().anyRequest().authenticated();
}
}
-Ajout des dépendances:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>20.0.1</version>
</dependency>
-Ajout des dépendances:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>20.0.1</version>
</dependency>
- Enfin nous tenons à remercier le seul et unique, notre professeur Mr YOUSFI Mohamed Docteur & professeur à l'ENSET MEDIA pour son soutien et son encouragement envers nous, aussi pour nous avoir donné cette opportunité d'améliorer nos compétences et de connaître les nouvelles technologies comme celles qui nous avons travaillé.
voir Ă©galement Ă propos Mr YOUSSFI Mohamed
Created by :[name=ELMAJNI KHAOULA] [time=Mon,2022,12,06][color=#EF0101] voir Ă©galement Ă propos de moi ELMAJNI Khaoula