Saltar al contenido

Keycloak

GitHub

Keycloak funciona a través del proveedor de OAuth2 genérico incorporado. No necesita un nuevo proveedor nativo para Keycloak. Configure su cliente Keycloak como un cliente de OpenID Connect y utilice provider: 'oauth2' con una versión estable providerIdcomo keycloak.

En su reino Keycloak, cree o abra el cliente utilizado por su aplicación Capacitor:

  1. Utilice el flujo de autorización code.
  2. Mantenga habilitado PKCE en la configuración de la aplicación.
  3. Registre cada URI de redirección que utilice su aplicación, por ejemplo myapp://oauth/keycloak para dispositivos móviles y una URL de llamada HTTPS para producción web.
  4. Utilice ámbitos como openid profile email Agregue offline_access solo cuando su reino y cliente estén configurados para emitir tokens de actualización.

La URL de emisor exacta es específica de la implementación. Las implementaciones de Keycloak comunes publican el metadato del reino en https://keycloak.example.com/realms/my-realm/.well-known/openid-configuration pero algunas implementaciones incluyen un camino base adicional. Utilice la URL de emisor mostrada por la configuración de punto de conexión de OpenID de su reino.

Prefiera issuerUrl para que el complemento pueda descubrir los puntos de conexión de autorización, token y cierre de sesión desde el metadato del reino:

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

Para tokens de refresco, solicite offline_access solo si su reino de Keycloak y cliente permiten tokens de refresco para esta aplicación:

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

Si el descubrimiento OIDC está bloqueado o su despliegue no expone metadatos a la aplicación, configure los endpoints directamente. Mantenga la URL base exactamente como su despliegue de Keycloak la publica:

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 no es uno de los IDs de proveedor preset de Auth Connect. Si ya utiliza SocialLoginAuthConnectpuedes inicializar el proveedor genérico oauth2 proveedor y iniciar sesión con provider: 'oauth2' más providerId: 'keycloak'.

Ver el referencia del punto de conexión de OpenID Connect de Keycloak documentos relacionados

proveedores de OAuth2 y OIDC

Sección titulada “Siga adelante desde Keycloak”

provider and log in with

If you are using Keycloak para planificar la autenticación y los flujos de cuenta, conecte con Usando @capgo/capacitor-login-social para la capacidad nativa en Usando @capgo/capacitor-login-social @capgo/capacitor-login-social para el detalle de implementación en @capgo/capacitor-login-social @capgo/capacitor-passkey para el detalle de implementación en @capgo/capacitor-passkey @capgo/capacitor-biométrico-nativo para el detalle de implementación en @capgo/capacitor-biométrico-nativo, y Autenticación de dos factores para los detalles de implementación en la autenticación de dos factores.