Table des matières
Créé le: 2022-12-31 ; Révisé le: 2022-12-31
Développons avec Simon - 1 - Configurer Microsoft Azure OIDC
Vidéo (2 heures)
Introduction (00:00:00)
- Le logiciel à modifier: Foilen CRM
- Stack: Java, Spring Boot, Spring Security, MySQL
- La modification à faire: “Changer le système de connexion pour utiliser Microsoft Azure OIDC”
- Actuellement: Utilise mon système Foilen Login
- Désiré: Utiliser Microsoft Azure OIDC
- Le commit dans Git avec toutes les modifications
Présentation du projet (00:02:46)
- La page de projet et le démarrer (00:02:46)
- Analyser le démarrage et l’outil de mise à jour de la base de données et plus (00:11:44)
- Aller sur l’application web (00:15:39)
Enlever Foilen Login (00:18:19)
Ajouter les librairies pour OIDC et Azure et configurer
Ajouter les librairies (00:30:53)
Dans build.gradle ajouter:
// ...
dependencies {
// ...
// Login
implementation 'com.azure.spring:spring-cloud-azure-starter-active-directory'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
// ...
}
dependencyManagement {
imports {
mavenBom "com.azure.spring:spring-cloud-azure-dependencies:${springCloudAzureVersion}"
}
}
Puis dans gradle.properties ajouter:
springCloudAzureVersion=4.5.0
ou plus récent.
Configurer Spring Security (00:33:40)
Exemple:
@Configuration
@Profile("!JUNIT")
public class SecuritySpringConfig {
@Bean
public CookieCsrfTokenRepository cookieCsrfTokenRepository() {
var csrfTokenRepository = new CookieCsrfTokenRepository();
csrfTokenRepository.setCookieHttpOnly(false);
return csrfTokenRepository;
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().csrfTokenRepository(cookieCsrfTokenRepository());
http.authorizeRequests(requests -> requests.anyRequest().authenticated());
http.oauth2Login(Customizer.withDefaults());
http.oauth2Client();
return http.build();
}
}
Les propriétés pour Spring Security (00:39:48)
Dans application.properties ajouter:
spring.security.oauth2.client.registration.azure.client-name:Azure
spring.security.oauth2.client.registration.azure.client-authentication-method:basic
spring.security.oauth2.client.registration.azure.provider:azure-oauth-provider
spring.security.oauth2.client.registration.azure.scope:openid,email
spring.security.oauth2.client.registration.azure.authorization-grant-type:authorization_code
spring.security.oauth2.client.provider.azure-oauth-provider.authorization-uri:https://login.microsoftonline.com/common/oauth2/v2.0/authorize
spring.security.oauth2.client.provider.azure-oauth-provider.user-info-uri:https://graph.microsoft.com/oidc/userinfo
spring.security.oauth2.client.provider.azure-oauth-provider.token-uri:https://login.microsoftonline.com/common/oauth2/v2.0/token
spring.security.oauth2.client.provider.azure-oauth-provider.jwk-set-uri:https://login.microsoftonline.com/common/discovery/v2.0/keys
spring.security.oauth2.client.provider.azure-oauth-provider.user-name-attribute:sub
Vous aurez aussi à configurer les propriétés suivantes avec les informations spécifiques à votre application et vous
pouvez les mettre dans le fichier application.properties ou dans des variables d’environnement:
spring.security.oauth2.client.registration.azure.client-id=
spring.security.oauth2.client.registration.azure.client-secret=
spring.security.oauth2.client.registration.azure.redirect-uri=
Créer une application dans Azure pour avoir un id et secret (00:51:00)
- https://portal.azure.com/
- Créer une Application d’entreprise (00:54:04)
- Créer votre propre application
- Choisir un nom
- Register an application to integrate with Azure AD (App you’re developing)
- Inscrire une application (00:55:08)
- Comptes dans un annuaire d’organisation (tout annuaire Azure AD - Multilocataire) et comptes Microsoft personnels (par exemple, Skype, Xbox)
- URI de redirection: http://localhost:8080/login/oauth2/code/azure (ou configurer plus tard (00:58:14))
- Les valeurs:
- client-id: Synonymes: ID d’application (client) (00:56:41) (00:57:48)
- client-secret:
- Dans Authentification unique, dans le bloc 1, cliquer Accéder à l’application (00:57:28)
- Cliquer Certificats & secrets (01:01:23)
- Les authorisations (API autorisées) (01:02:30) (01:04:55)
- Microsoft Graph:
- offline_access
- openid
- profile
- User.Read
- Microsoft Graph:
- Créer votre propre application
Compléter le code avec ce qui est reçu d’OIDC (01:07:09)
- Ajuster les TODO (01:07:09)
- Créer un intercepteur pour créer un utilisateur s’il n’existe pas (01:21:42)
- Recevoir le courriel de l’utilisateur (01:30:02)
- Pouvoir afficher les informations de l’utilisateur dans l’application web (01:41:40)
Faire fonctionner les tests unitaires (01:43:56)
- Changer la configuration des tests pour la base de données à distance (01:43:56)
- Investiguer pourquoi les tests de démarrent pas (01:44:56)
- Il fallait enlever
useJUnitPlatformdansbuild.gradleparce que c’est pour jUnit 5; pas 4 (01:48:12)
- Il fallait enlever
- Compléter les TODO dans les tests (01:48:37)
Enlever le fichier de configuration local (01:52:06)
Il ne faut pas le laisser dans Git parce qu’il y a des secrets dedans.
Révision dans Git de toutes les modifications (01:55:45)
- Le commit dans Git avec toutes les modifications