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)

Présentation du projet (00:02:46)

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)

Compléter le code avec ce qui est reçu d’OIDC (01:07:09)

Faire fonctionner les tests unitaires (01:43:56)

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)