Lompat ke konten

Keycloak

GitHub

Keycloak bekerja melalui penyedia OAuth2 generic bawaan. Anda tidak perlu penyedia native baru untuk Keycloak. Konfigurasi klien Keycloak sebagai klien OpenID Connect dan gunakan provider: 'oauth2' dengan stabil providerId, seperti keycloak.

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

  1. Gunakan aliran otorisasi code.
  2. Tetapkan PKCE di konfigurasi aplikasi.
  3. Daftarkan setiap URI redirect yang digunakan oleh aplikasi Anda, misalnya myapp://oauth/keycloak untuk mobile dan URL panggilan HTTPS untuk web produksi.
  4. Pilih 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 penggunaan. https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationMetadata wilayah umumnya dipublikasikan di

tetapi beberapa penggunaan menambahkan jalur dasar tambahan. Gunakan URL issuer yang ditampilkan oleh konfigurasi Endpoint OpenID Wilayah Anda.

Contoh penemuan OIDC

Bab berjudul “Contoh penemuan OIDC” issuerUrl Lebih baik

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

Salin ke clipboard (Salin ke clipboard) untuk token refresh 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 pengembangan Keycloak Anda menerbitkannya:

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 bisa menginisialisasi oauth2 penyedia umum dan masuk dengan provider: 'oauth2' plus providerId: 'keycloak'.

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

Penyedia OAuth2 dan OIDC

Bab berjudul “Teruskan dari Keycloak”

Jika Anda menggunakan

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