Zum Inhalt springen

Keycloak

GitHub

Übersicht

Übersicht

Keycloak funktioniert über den eingebauten 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 providerIdz.B. keycloak.

Verwenden Sie die AutorisierungsCapacitor-Fluss.

  1. Use the authorization code flow.
  2. Registrieren Sie alle Redirect-URI, die Ihre App verwendet, z.B.
  3. Beispiel myapp://oauth/keycloak Für mobile Geräte und eine HTTPS-Rückruf-URL für die Produktionswebseite.
  4. Verwenden Sie Berechtigungen wie openid profile email. Fügen Sie offline_access nur dann hinzu, wenn Ihr Realm und Client konfiguriert sind, um Refresh-Tokens auszugeben.

Die genaue Aussteller-URL ist deployment-spezifisch. Aktuelle Keycloak-Deployments veröffentlichen üblicherweise Realm-Metadaten 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 durch Ihr Realm’s OpenID-Endpunkt-Konfiguration angezeigt wird.

Präferieren Sie issuerUrl damit der Plugin die Autorisierungs-, Token- und Abmelde-Endpunkte aus den 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ügen Sie für Refresh-Tokens an offline_access nur wenn Ihr Keycloak-Domäne und -Client die Aktualisierung von Token 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,
},
},
});

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

Keycloak ist nicht eines der voreingestellten Auth-Connect-Anbieter-IDs. Wenn Sie bereits SocialLoginAuthConnectverwenden, können Sie den allgemeinen oauth2 anwenden und mit provider: 'oauth2' anmelden providerId: 'keycloak'.

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

Wenn Sie Keycloak verwenden Keycloak um die Authentifizierung und die Kontenflüsse zu planen, verbinden Sie es mit Mit @capgo/capacitor-social-login verwenden für die native Fähigkeit in Mit @capgo/capacitor-social-login, @capgo/capacitor-social-login für die Implementierungsdetails in @capgo/capacitor-social-login, @capgo/capacitor-passkey für die Implementierungsdetails in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric für die Implementierungsdetails in @capgo/capacitor-native-biometric und Zwei-Faktor-Authentifizierung für die Implementierungsdetails in Zwei-Faktor-Authentifizierung.