Keycloak
复制一个包含安装步骤和本插件的完整 Markdown 指南的配置提示。
概述
概述部分Keycloak 通过内置的通用 OAuth2 提供商工作。您不需要为 Keycloak 创建新的本机提供商。配置您的 Keycloak 客户端作为 OpenID Connect 客户端,并使用 provider: 'oauth2' 与稳定的 providerId例如 keycloak.
Keycloak 客户端设置
在您的 Keycloak 领域中,创建或打开用于您的 __CAPGO_KEEP_0__ 应用的客户端:使用授权 Capacitor 流程。
- 使用授权code流程。
- 概述部分
- 为您的应用程序注册每个重定向 URI,例如
myapp://oauth/keycloak例如,用于移动设备的 HTTPS 回调 URL 和用于生产 Web 的 HTTPS 回调 URL。 - 使用范围,如
openid profile email. Addoffline_access具体的发行者 URL 是部署相关的。当前的 Keycloak 部署通常在
但一些部署包含额外的基路径。使用您的实例的 OpenID 端点配置中显示的发行者 URL。 https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationOIDC 发现示例
OIDC 发现示例
优先Prefer 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);对于刷新令牌,请求 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, }, },});手动端点fallback
手动端点fallback如果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`, }, },});Auth Connect兼容性
Auth Connect兼容性Keycloak不是Auth Connect预设提供程序ID之一。如果您已经使用 SocialLoginAuthConnect您仍可以初始化通用 oauth2 并使用 provider: 'oauth2' plus providerId: 'keycloak'.
查看 Keycloak OpenID Connect endpoint reference 用于发现和端点路径的参考。
继续使用 Keycloak
Section titled “继续使用 Keycloak”如果您正在使用 Keycloak 用于计划身份验证和帐户流程,连接它 使用@capgo/capacitor-social-login 为@capgo/capacitor-social-login @capgo/capacitor-社交登录 为@capgo/capacitor-social-login @capgo/capacitor-passkey 为@capgo/capacitor-passkey @capgo/capacitor-native-生物识别 为@capgo/capacitor-native-biometric 两步验证 为两步验证