Keycloak
复制一个包含安装步骤和本插件的完整 Markdown 指南的配置提示。
Keycloak 通过内置的通用 OAuth2 提供者工作。您不需要为 Keycloak 创建新的本机提供者。将 Keycloak 客户端配置为 OpenID Connect 客户端,并使用 provider: 'oauth2' 与稳定的 providerId例如 keycloak.
Keycloak 客户端设置
标题为“Keycloak 客户端设置”的部分在您的 Keycloak 领域中,创建或打开用于您的 Capacitor 应用的客户端:
- 使用授权 code 流程。
- 在应用配置中保持 PKCE 启用。
- 注册您的应用使用的每个重定向 URI,例如
myapp://oauth/keycloak为移动设备和生产Web的HTTPS回调URL。 - 使用
openid profile email。仅在您的域和客户端已配置为发行刷新令牌时添加offline_access。
发行者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);对于刷新令牌,请求 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`, }, },});Auth Connect 兼容性
Auth Connect 兼容性Keycloak 不是 Auth Connect 预设提供商 ID 之一。如果您已经使用 SocialLoginAuthConnect,您仍然可以初始化通用 oauth2 提供商并使用 provider: 'oauth2' 进行登录 providerId: 'keycloak'.
查看 Keycloak OpenID Connect endpoint reference 用于发现和端点路径的参考。
相关文档
标题为“相关文档”的部分从 Keycloak 继续
标题为“从 Keycloak 继续”的部分如果您正在使用 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的实现细节, 双因素身份验证 对于双因素身份验证的实现细节,