Passer à la navigation

Keycloak

GitHub

Keycloak fonctionne à travers le fournisseur OAuth2 générique intégré. Vous n'avez pas besoin d'un nouveau fournisseur natif pour Keycloak. Configurez votre client Keycloak en tant que client OpenID Connect et utilisez provider: 'oauth2' avec une solution stable providerIdpar exemple keycloak.

Dans votre domaine Keycloak, créez ou ouvrez le client utilisé par votre application Capacitor :

  1. Utilisez le flux d'autorisation code.
  2. Activez PKCE dans la configuration de l'application.
  3. Inscrivez chaque URI de redirection que votre application utilise, par exemple myapp://oauth/keycloak pour les appareils mobiles et une URL de rappel HTTPS pour le web en production.
  4. Utilisez des scopes comme openid profile email. Ajoutez offline_access seulement lorsque votre domaine et votre client sont configurés pour émettre des jetons de rafraîchissement.

L'URL exacte de l'émetteur est spécifique à la mise en production. Les déploiements Keycloak courants publient généralement les métadonnées du domaine à https://keycloak.example.com/realms/my-realm/.well-known/openid-configuration, mais certains déploiements incluent un chemin d'accès de base supplémentaire. Utilisez l'URL de l'émetteur affichée par la configuration d'endpoint OpenID de votre domaine.

Préférez issuerUrl afin que le plugin puisse découvrir les points de terminaison d'autorisation, de jeton et de déconnexion à partir des métadonnées du domaine :

import { SocialLogin } from '@capgo/capacitor-social-login';
const keycloakIssuer = 'https://keycloak.example.com/realms/my-realm';
await SocialLogin.initialize({
oauth2: {
keycloak: {
appId: 'your-keycloak-client-id',
issuerUrl: keycloakIssuer,
redirectUrl: 'myapp://oauth/keycloak',
scope: 'openid profile email',
pkceEnabled: true,
resourceUrl: `${keycloakIssuer}/protocol/openid-connect/userinfo`,
},
},
});
const result = await SocialLogin.login({
provider: 'oauth2',
options: {
providerId: 'keycloak',
},
});
console.log(result.result.idToken);
console.log(result.result.accessToken?.token);
console.log(result.result.resourceData);

Pour les jetons de rafraîchissement, demandez offline_access seulement si votre domaine Keycloak et votre client autorisent les jetons de renouvellement pour cette application :

await SocialLogin.initialize({
oauth2: {
keycloak: {
appId: 'your-keycloak-client-id',
issuerUrl: keycloakIssuer,
redirectUrl: 'myapp://oauth/keycloak',
scope: 'openid profile email offline_access',
pkceEnabled: true,
},
},
});

Si le découvert OIDC est bloqué ou si votre déploiement ne publie pas les métadonnées à l'application, configurez les chemins directement. Conservez l'URL de base exactement comme votre déploiement Keycloak la publie :

const keycloakRealmUrl = 'https://keycloak.example.com/realms/my-realm';
await SocialLogin.initialize({
oauth2: {
keycloak: {
appId: 'your-keycloak-client-id',
authorizationBaseUrl: `${keycloakRealmUrl}/protocol/openid-connect/auth`,
accessTokenEndpoint: `${keycloakRealmUrl}/protocol/openid-connect/token`,
redirectUrl: 'myapp://oauth/keycloak',
scope: 'openid profile email',
pkceEnabled: true,
resourceUrl: `${keycloakRealmUrl}/protocol/openid-connect/userinfo`,
logoutUrl: `${keycloakRealmUrl}/protocol/openid-connect/logout`,
},
},
});

Keycloak n'est pas l'un des IDs de fournisseur de Auth Connect par défaut. Si vous utilisez déjà SocialLoginAuthConnect, vous pouvez toujours initialiser le fournisseur générique oauth2 et vous connecter avec provider: 'oauth2' plus providerId: 'keycloak'.

Voir le Référence du point de terminaison OpenID Connect Keycloak pour la découverte et les chemins des points de terminaison. Docs connexes

Fournisseurs OAuth2 et OIDC

Section intitulée « Continuez depuis Keycloak »

Si vous utilisez

Keycloak Keycloak pour planifier l'authentification et les flux de compte, connectez-le avec Utiliser @capgo/capacitor-login-social pour la capacité native dans Utiliser @capgo/capacitor-login-social, @capgo/capacitor-login-social pour le détail d'implémentation dans @capgo/capacitor-login-social, @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, @capgo/capacitor-biométrique-native pour le détail d'implémentation dans @capgo/capacitor-biométrique-native, et L'authentification à deux facteurs pour le détail d'implémentation dans L'authentification à deux facteurs.