メニューに進む

Keycloak

GitHub

Keycloakは、組み込みの汎用OAuth2プロバイダーを通じて機能します。Keycloakには新しいネイティブプロバイダーが必要ありません。KeycloakクライアントをOpenID Connectクライアントとして設定し、 provider: 'oauth2' 安定した providerId例えば keycloak.

In your Keycloak realm, create or open the client used by your Capacitor app:

  1. Use the authorization code flow.
  2. アプリが使用するすべてのリダイレクトURIを登録してください。例えば
  3. 例えば myapp://oauth/keycloak モバイル用とHTTPSコールバックURLの生産Web用です。
  4. スコープとして openid profile emailを追加します。 offline_access refreshトークンを発行するように設定されている場合のみ、ドメインとクライアントを使用してください。

発行URLはデプロイメント固有です。現在のKeycloakデプロイメントでは、ドメインメタデータを https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationに公開していますが、デプロイメントによっては追加のベースパスが含まれる場合があります。

ドメインのOpenIDエンドポイント構成で示される発行URLを使用してください。

OIDC検出例

OIDC検出例 issuerUrl 検出するには、ドメインメタデータから認可、トークン、ログアウトエンドポイントをプラグインが優先してください:

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

refreshトークン用の場合、 offline_access Keycloak のリーアルとクライアントがこのアプリにリフレッシュトークンを許可する場合のみ:

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

手動エンドポイントフォールバック

セクション “手動エンドポイントフォールバック”

OIDC 発見がブロックされている場合や、デプロイメントがアプリにメタデータを公開していない場合、エンドポイントを直接設定する。ベース URL を、Keycloak のデプロイメントが公開しているものと同じに維持してください:

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 は Auth Connect のプリセット プロバイダー ID の 1 つではありません。すでに SocialLoginAuthConnectを使用している場合でも、 oauth2 のジェネリック provider: 'oauth2' プロバイダーを初期化し、ログインすることができます。 providerId: 'keycloak'.

See the Keycloak OpenID Connect endpoint reference for discovery and endpoint paths.

Capgoを使用している場合 Keycloak を計画し、認証とアカウントフローを接続するには @capgo/capacitor-social-loginを使用する @capgo/capacitor-social-loginのネイティブ機能を使用する @capgo/capacitor-social-login @capgo/capacitor-social-loginの実装詳細 @capgo/capacitor-passkey @capgo/capacitor-passkeyの実装詳細 @capgo/capacitor-native-biometric @capgo/capacitor-native-biometricの実装詳細 2要素認証 2要素認証の実装詳細