Keycloak
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Übersicht
Abschnitt: „Übersicht“Keycloak funktioniert über den integrierten generischen OAuth2-Provider. Sie benötigen keinen neuen nativen Provider für Keycloak. Konfigurieren Sie Ihren Keycloak-Client als OpenID Connect-Client und verwenden Sie provider: 'oauth2' mit einem stabilen providerId, z. B. keycloak.
Keycloak-Client-Einstellungen
Abschnitt mit dem Titel „Keycloak-Client-Einstellungen“Erstellen oder öffnen Sie in Ihrem Keycloak-Realm den Client, der von Ihrer Capacitor-App verwendet wird:
- Verwenden Sie den Authorization code-Flow.
- Halten Sie PKCE in der App-Konfiguration aktiviert.
- Registrieren Sie jede Redirect-URI, die Ihre App verwendet, z. B.
myapp://oauth/keycloakfür mobile Geräte und eine HTTPS-Callback-URL für das Web in der Produktion. - Verwenden Sie Scopes wie
openid profile email. Füge hinzuoffline_accessnur wenn dein Realm und Client so konfiguriert sind, dass sie Refresh Tokens ausstellen.
Die genaue Issuer-URL ist deployment-spezifisch. Aktuelle Keycloak-Deployments veröffentlichen Realm-Metadaten häufig unter https://keycloak.example.com/realms/my-realm/.well-known/openid-configuration, aber einige Deployments enthalten einen zusätzlichen Basispfad. Verwende die Issuer-URL, die in der OpenID Endpoint Configuration deines Realms angezeigt wird.
OIDC-Discovery-Beispiel
Abschnitt mit dem Titel „OIDC-Discovery-Beispiel“Bevorzugen issuerUrl damit das Plugin die Authorization-, Token- und Logout-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 anfordern offline_access nur, wenn dein Keycloak-Realm und Client Refresh Tokens für diese App erlauben:
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 Endpoint-Fallback
Abschnitt: „Manueller Endpoint-Fallback“Wenn die OIDC-Discovery blockiert ist oder dein Deployment der App keine Metadaten bereitstellt, konfiguriere die Endpoints direkt. Behalte die Basis-URL genau so bei, wie dein Keycloak-Deployment 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 keine der vordefinierten Auth-Connect-Provider-IDs. Wenn du bereits SocialLoginAuthConnect nutzt, kannst du trotzdem den generischen oauth2 Provider initialisieren und dich mit provider: 'oauth2' sowie providerId: 'keycloak'.
Siehe den Keycloak OpenID Connect Endpoint-Referenz für Discovery- und Endpoint-Pfade.
Verwandte Dokumentation
Abschnitt „Verwandte Dokumente“Weiter von Keycloak aus
Abschnitt mit dem Titel „Weiter von Keycloak aus“Wenn du es nutzt Keycloak Um Authentifizierungs- und Account-Flows zu planen, verbinde es mit @capgo/capacitor-social-login verwenden für die native Funktion bei der Verwendung von @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 zur Zwei-Faktor-Authentifizierung.