KhaoulaElmajni / AP-4-Securite-des-micro-services-avec-Keycloak

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AP 4-Securit-des-micro-services-avec-Keycloak🎓💻

1.Présentation de l'activité pratique

  • Partie 1 đź’Ż

    1. Télécharger Keycloak 19
    2. DĂ©marrer Keycloak
    3. Créer un compte Admin
    4. Créer une Realm
    5. Créer un client à sécuriser
    6. Créer des utilisateurs
    7. Créer des rôles
    8. Affecter les rĂ´les aux utilisateurs
    9. 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

2.Architecture de l'activité pratique


3.Les Technologies utilisées

1.Kycloak

  • * 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đź”—

4.Le dépot des micro-services utilisés

5 .La sécurité des micro-servces avec Keycloak

Partie 1 :

1. Télécharger Keycloak 20.0.1

2. DĂ©marrer Keycloak

  • 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

3. Créer un compte Admin

4. Créer une Realm

5. Créer un client à sécuriser

6. Créer des utilisateurs

USER1 USER2 USER3
Création
Password

La liste des utilisateurs crées:

7. Créer des rôles

ROLE1 ROLE2 ROLE3
Création

La liste des roles crées:

8. Affecter les rĂ´les aux utilisateurs

USER1 USER2 USER3
USER
ADMIN
MANAGER

9. Avec PostMan :

  • Tester l'authentification avec le mot de passe

  • rĂ©sultat:

  • Analyser les contenus des deux JWT Access Token et Refresh Token

1.Access Token:

2.Resfresh Token:

  • Tester l'authentification avec le Refresh Token

  • Tester l'authentification avec Client ID et Client Secret
  1. Activation de l'authentification du client:

  2. Copie le secret généré:

  • 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

1. Customer-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();
    }
}

2. Inventory-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>

3. 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>


  • 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

About

License:MIT License


Languages

Language:Java 57.1%Language:TypeScript 30.2%Language:HTML 9.9%Language:JavaScript 2.6%Language:CSS 0.1%