scribejava

🔐 Support OpenID Connect (OIDC)

Ce module fournit une implémentation complÚte et sécurisée du protocole OpenID Connect 1.0.


🌟 FonctionnalitĂ©s ClĂ©s


🚀 Exemple de Flux Complet

Voici comment implémenter un flux OIDC standard (Discovery + Auth + Validation) :

// 1. Initialisation avec Auto-découverte (Google par exemple)
OidcDiscoveryService discovery = new OidcDiscoveryService();
OidcProviderMetadata metadata = discovery.discover("https://accounts.google.com");

OidcService service = new OidcServiceBuilder(clientId)
    .apiSecret(clientSecret)
    .callback(callbackUrl)
    .defaultScope("openid profile email")
    .build(new DefaultOidcApi20(metadata));

// 2. Génération de l'URL d'autorisation
String authUrl = service.getAuthorizationUrl();

// 3. Échange du code contre des jetons
OpenIdOAuth2AccessToken token = service.getAccessToken(new AuthorizationCodeGrant(code));

// 4. Validation de l'ID Token (Signature + Claims)
IdTokenValidator validator = new IdTokenValidator(metadata.getIssuer(), clientId);
IdToken idToken = service.extractIdToken(token);
validator.validate(idToken, nonce, System.currentTimeMillis());

System.out.println("Utilisateur authentifié : " + idToken.getSubject());

đŸ›Ąïž SĂ©curitĂ© & OIDC

L’utilisation d’OpenID Connect nĂ©cessite souvent une sĂ©curitĂ© renforcĂ©e :


🚀 Utilisation AvancĂ©e

Validation manuelle d’un ID Token

IdTokenValidator validator = new IdTokenValidator(expectedIssuer, clientId);
IdToken idToken = IdToken.parse(rawIdToken);
validator.validate(idToken); 

Gestion des Claims (UserInfo)

OAuthRequest request = new OAuthRequest(Verb.GET, service.getMetadata().getUserinfoEndpoint());
service.signRequest(token, request);

try (Response response = service.execute(request)) {
    UserInfoJsonExtractor extractor = UserInfoJsonExtractor.instance();
    Map<String, Object> claims = extractor.extract(response.getBody());
    System.out.println("Email : " + claims.get("email"));
}

🏠 Accueil | 🔌 APIs | 🔐 OIDC | đŸ›Ąïž SĂ©curitĂ©