Lebih cepat ke konten

Keycloak

GitHub

Keycloak berfungsi 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. Pilih aliran otorisasi code.
  2. Jangan mengaktifkan PKCE di konfigurasi aplikasi.
  3. Mendaftarkan setiap URI redirect yang digunakan aplikasi, misalnya myapp://oauth/keycloak untuk perangkat seluler dan URL panggilan HTTPS untuk web produksi.
  4. Menggunakan 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 pengaturan pengembangan. Pengaturan Keycloak saat ini biasanya menerbitkan metadata wilayah di https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationtetapi beberapa pengaturan termasuk jalur dasar tambahan. Gunakan URL issuer yang ditampilkan oleh endpoint konfigurasi OpenID wilayah Anda.

Mengutamakan issuerUrl agar plugin dapat menemukan endpoint autentikasi, 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 Autentikasi Koneksi. Jika Anda sudah menggunakan SocialLoginAuthConnect Anda masih bisa menginisialisasi penyedia umum oauth2 provider dan masuk dengan provider: 'oauth2' plus providerId: 'keycloak'.

Lihat referensi endpoint OpenID Connect Keycloak untuk penemuan dan jalur endpoint. Referensi terkait

Oauth2 dan penyedia OIDC

Bahasa berjudul “Pindah dari Keycloak”

__CAPGO_KEEP_0__

Jika Anda menggunakan Keycloak untuk merencanakan autentikasi dan alur akun, hubungkannya dengan Menggunakan @capgo/capacitor-login-social untuk kemampuan asli di Menggunakan @capgo/capacitor-login-social Menggunakan @capgo/capacitor-login-social untuk detail implementasi di @capgo/capacitor-login-social 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.