Zum Inhalt springen

Keycloak

GitHub

Keycloak funktioniert über den eingebauten generischen OAuth2-Anbieter. Sie benötigen keinen neuen native Anbieter für Keycloak. Konfigurieren Sie Ihren Keycloak-Kunden als OpenID-Connect-Kunden und verwenden Sie provider: 'oauth2' mit einer stabilen providerId, wie keycloak.

Erstellen oder öffnen Sie in Ihrem Keycloak-Domäne den Kunden, der von Ihrer Capacitor-Anwendung verwendet wird:

  1. Verwenden Sie den Autorisierungscode-Fluss.
  2. Bleiben Sie PKCE im App-Konfiguration aktiviert.
  3. Registrieren Sie alle Umleitungs-URI, die Ihre App verwendet, zum Beispiel myapp://oauth/keycloak für mobile Geräte und eine HTTPS-Rückruf-URL für die Produktionswebanwendung.
  4. Verwenden Sie Berechtigungen wie openid profile emailHinzufügen offline_access nur, wenn Ihre Domäne und Ihr Kunden konfiguriert sind, um Refresh-Tokens auszugeben.

Die genaue Aussteller-URL ist deployment-spezifisch. Aktuelle Keycloak-Deployments veröffentlichen häufig die Domänenmetadaten unter https://keycloak.example.com/realms/my-realm/.well-known/openid-configuration, aber einige Bereitstellungen enthalten einen zusätzlichen Basis-Path. Verwenden Sie die Aussteller-URL, die von der OpenID-Endpunkt-Konfiguration Ihrer Domäne angezeigt wird.

OIDC-Entdeckungsbeispiel

Abschnitt: OIDC-Entdeckungsbeispiel

Vorziehen issuerUrl damit der Plugin die Autorisierungs-, Token- und Abmeldefunktionen aus dem Realm-Metadaten entdecken kann:

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);

Für die Aktualisierungstoken anfragen offline_access nur, wenn Ihr Keycloak-Realm und Client die Aktualisierungstoken für diese App zulassen:

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

Manueller Endpunkt-Fallback

Abschnitt: Manueller Endpunkt-Fallback

Wenn die OIDC-Entdeckung blockiert ist oder Ihre Bereitstellung keine Metadaten an die App ausgibt, konfigurieren Sie die Endpunkte direkt. Halten Sie die Basis-URL genau so, wie Ihre Keycloak-Bereitstellung sie veröffentlicht:

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

Auth Connect-Kompatibilität

Abschnitt: Auth Connect-Kompatibilität

Keycloak ist nicht eines der voreingestellten Auth Connect-Anbieter-IDs. Wenn Sie bereits Keycloak verwenden SocialLoginAuthConnectkönnen Sie den allgemeinen oauth2 Anbieter initialisieren und mit provider: 'oauth2' plus providerId: 'keycloak'.

Siehe die Referenz zum Keycloak-OpenID-Connect-Endpunkt für die Entdeckung und Endpunkt-Pfade.

Wenn Sie Live Update verwenden Keycloak um die Authentifizierung und Kontoflusspläne zu planen, verbinden Sie es mit Verwenden Sie @capgo/capacitor-social-login Für die native Fähigkeit in Verwenden Sie @capgo/capacitor-social-login @capgo/capacitor-Social-Login Für die Implementierungsdetails in @capgo/capacitor-social-login @capgo/capacitor-Passwort für die Implementierungsdetails in @capgo/capacitor-Passkey @capgo/capacitor-native-biometrisch für die Implementierungsdetails in @capgo/capacitor-native-biometrisch, und Zweifaktor-Authentifizierung für die Implementierungsdetails in Zweifaktor-Authentifizierung.