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 version 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. Conservez PKCE activé dans la configuration de l'application.
  3. Enregistrez 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 de production.
  4. Utilisez des scopes comme openid profile emailAjoutez 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 courants de Keycloak publient généralement les métadonnées du domaine à https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationmais 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 rafraîchissement 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,
},
},
});

Copier dans le presse-papiers

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`,
},
},
});

Si Keycloak n'est pas l'un des IDs de fournisseur de Auth Connect par défaut, vous pouvez toujours initialiser le fournisseur générique si vous utilisez déjà

Copier dans le presse-papiers

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

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

If vous utilisez Keycloak pour planifier l'authentification et les flux de compte, connectez-l’à En utilisant @capgo/capacitor-social-login pour la capacité native dans En utilisant @capgo/capacitor-social-login @capgo/capacitor-social-login pour le détail d'implémentation dans @capgo/capacitor-social-login @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey @capgo/capacitor-native-biometric pour le détail d'implémentation dans @capgo/capacitor-native-biometric, et Deux facteurs d'authentification pour les détails d'implémentation dans l'authentification à deux facteurs.