pismile

Forcer une nouvelle vérification

Exigez une nouvelle confirmation de l'alias avant une action sensible, avec prompt=login ou max_age.

2 min de lecture · Mis à jour le · API v1

Connectez-vous pour voir vos propres identifiants sandbox dans les exemples.

Par défaut, un utilisateur déjà connecté à pismile revient sur votre site sans refaire la vérification (_single sign-on_). Avant une action sensible — un retrait, un changement de bénéficiaire, une signature — vous pouvez exiger une nouvelle confirmation depuis son application bancaire.

Les trois règles#

Situation

Ce que fait pismile

prompt=login dans la demande d'autorisation

Nouvelle vérification à chaque fois

max_age=N dans la demande d'autorisation

Nouvelle vérification si la dernière date de plus de N secondes

Dernière vérification de plus de 90 jours

Nouvelle vérification automatique, sans rien demander de votre côté

Dans tous les cas, la claim auth_time du jeton d'identité indique la date de la dernière vérification.

Ajouter prompt ou max_age#

SecurityConfig.java
@Bean
SecurityFilterChain security(HttpSecurity http, ClientRegistrationRepository registrations) throws Exception {
    DefaultOAuth2AuthorizationRequestResolver resolver =
            new DefaultOAuth2AuthorizationRequestResolver(registrations, "/oauth2/authorization");
    resolver.setAuthorizationRequestCustomizer(OAuth2AuthorizationRequestCustomizers.withPkce()
            .andThen(builder -> builder.additionalParameters(params -> params.put("max_age", 300))));

    http.authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
        .oauth2Login(login -> login.authorizationEndpoint(endpoint -> endpoint.authorizationRequestResolver(resolver)));
    return http.build();
}

Vérifier auth_time côté serveur#

Ne faites pas confiance au seul paramètre envoyé : vérifiez la date reçue avant d'exécuter l'action sensible.

Instant verifiedAt = user.getAuthenticatedAt(); // OidcUser : claim auth_time
if (verifiedAt == null || verifiedAt.isBefore(Instant.now().minusSeconds(300))) {
    throw new AccessDeniedException("Nouvelle vérification requise");
}

Cette page vous a-t-elle aidé ?