Lebih cepat ke konten

Keycloak

GitHub

Keycloak bekerja melalui penyedia OAuth2 bawaan. Anda tidak memerlukan penyedia asli baru untuk Keycloak. Konfigurasi klien Keycloak sebagai klien OpenID Connect dan gunakan provider: 'oauth2' dengan stabil providerIdseperti keycloak.

Pada wilayah Keycloak Anda, buat atau buka klien yang digunakan oleh aplikasi Capacitor Anda:

  1. Pakai alur otorisasi code.
  2. Tetapkan PKCE di konfigurasi aplikasi.
  3. Daftarkan setiap URI pengalihan yang digunakan aplikasi Anda, misalnya myapp://oauth/keycloak untuk perangkat seluler dan URL panggilan HTTPS untuk web produksi.
  4. Gunakan ruang lingkup seperti openid profile emailTambahkan offline_access hanya ketika wilayah dan klien Anda telah dikonfigurasi untuk mengeluarkan token refresh.

URL issuer yang tepat adalah spesifik untuk setiap pengembangan. Pengembangan Keycloak saat ini biasanya menerbitkan metadata wilayah di https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationtetapi beberapa pengembangan termasuk jalur dasar tambahan. Gunakan URL issuer yang ditampilkan oleh konfigurasi Endpoint OpenID Wilayah Anda.

Lebih baik issuerUrl agar plugin dapat menemukan endpoint otorisasi, token, dan logout dari metadata wilayah:

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

Untuk token refresh, minta offline_access Hanya jika wilayah Keycloak dan klien Anda memungkinkan token refresh untuk aplikasi ini:

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

Jika penemuan OIDC diblokir atau pengembangan Anda tidak menampilkan metadata ke aplikasi, konfigurasi endpoint secara langsung. Simpan URL dasar tepat seperti yang diterbitkan oleh pengembangan Keycloak Anda:

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 bukanlah salah satu ID penyedia preset Auth Connect. Jika Anda sudah menggunakan SocialLoginAuthConnectAnda masih dapat menginisialisasi versi umum oauth2 provider and log in with provider: 'oauth2' Integrasi providerId: 'keycloak'.

Lihat Referensi Endpoint Keycloak OpenID Connect Referensi Dokumen terkait

Provider OAuth2 dan OIDC

Bahasa berjudul “Teruskan dari Keycloak”

Section titled “Keep going from Keycloak”

Jika Anda menggunakan Keycloak untuk merencanakan autentikasi dan alur akun, hubungkannya dengan Menggunakan @capgo/capacitor-login sosial untuk kemampuan asli di Menggunakan @capgo/capacitor-login sosial Menggunakan @capgo/capacitor-login sosial untuk detail implementasi di @capgo/capacitor-login sosial Menggunakan @capgo/capacitor-passkey untuk detail implementasi di @capgo/capacitor-passkey Menggunakan @capgo/capacitor-biometrik asli untuk detail implementasi di @capgo/capacitor-biometrik asli, dan Autentikasi dua faktor untuk detail implementasi di Autentikasi dua faktor