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 providerIdz.B. keycloak.

In Ihrem Keycloak-Raum erstellen Sie oder öffnen Sie den Kunden, der von Ihrer Capacitor-App verwendet wird:

  1. Verwenden Sie den Autorisierungscode-Fluss.
  2. Behalte PKCE in der App-Konfiguration aktiviert.
  3. Registriere alle Redirect-URI, die deine App verwendet, zum Beispiel myapp://oauth/keycloak für mobile Geräte und eine HTTPS-Rückruf-URL für die Produktionswebanwendung.
  4. Verwende Berechtigungen wie openid profile emailFüge offline_access nur dann hinzu, wenn dein Realm und Client so konfiguriert sind, dass sie Refresh-Tokens ausgeben.

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-configurationaber einige Deployments enthalten einen zusätzlichen Basis-Path. Verwende die Aussteller-URL, die durch deine Realm’s OpenID-Endpunkt-Konfiguration angezeigt wird.

Präferiere issuerUrl so dass das 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ür Refresh-Tokens anfragen offline_access Nur, wenn Ihr Keycloak-Domäne und Client Refresh-Tokens 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 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 einer der voreingestellten Auth-Connect-Anbieter-IDs. Wenn Sie bereits SocialLoginAuthConnectinitialisieren, können Sie den generischen oauth2 Anbieter und mit provider: 'oauth2' plus providerId: 'keycloak'.

Siehe die Referenz zum Keycloak-OpenID-Connect-Endpunkt zur Entdeckung und Pfaden der Endpunkte.

If Sie Keycloak verwenden Keycloak um die Authentifizierung und die Kontenflüsse 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-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 der Zwei-Faktor-Authentifizierung.