본문으로 건너뛰기

Keycloak

GitHub

Keycloak은 내장된 일반 OAuth2 제공자를 통해 작동합니다. Keycloak에 대한 새로운 네이티브 제공자가 필요하지 않습니다. Keycloak 클라이언트를 OpenID Connect 클라이언트로 구성하고 provider: 'oauth2' 안정적인 providerId, 예를 들어 keycloak.

인증 Capacitor 흐름을 사용하세요.

  1. code
  2. PKCE를 앱 설정에서 활성화하세요.
  3. 앱에서 사용하는 모든 리다이렉트 URI를 등록하세요. 예를 들어 myapp://oauth/keycloak 모바일과 HTTPS callback URL을 프로덕션 웹에서 사용하세요.
  4. scopes를 사용하세요. 예를 들어 openid profile emailrefresh 토큰을 발급받을 수 있는 경우에만 사용하세요. offline_access 정확한 issuer URL은 배포에 따라 다릅니다. 현재 Keycloak 배포에서는 일반적으로

realm 메타데이터를 공개합니다. 그러나 일부 배포에서는 추가 base path를 포함할 수 있습니다. realm의 OpenID Endpoint Configuration에서 issuer URL을 확인하세요. https://keycloak.example.com/realms/my-realm/.well-known/openid-configurationOIDC discovery 예시

OIDC discovery 예시

권장하는 방법은

이러한 방법으로 plugin이 realm 메타데이터에서 인증, 토큰, 로그아웃 엔드포인트를 자동으로 발견할 수 있습니다. issuerUrl so the plugin can discover the authorization, token, and logout endpoints from the realm metadata:

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

수동 엔드포인트 fallback

수동 엔드포인트 fallback

OIDC 디스커버리가 차단되거나 앱에 메타데이터를 노출하지 않는 경우, 엔드포인트를 직접 구성합니다. Base 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은 인증 연결의 기본 제공자 ID 목록에 포함되지 않습니다. 이미 SocialLoginAuthConnect을 사용하고 있다면, 일반적인 oauth2 제공자와 로그인 provider: 'oauth2' 더하기 providerId: 'keycloak'.

참조하세요 Keycloak OpenID Connect 엔드포인트 참조 발견 및 엔드포인트 경로를 위한

Keycloak에서 계속 진행

제목 ‘Keycloak에서 계속 진행’

Keycloak을 사용 중이라면 Keycloak 인증 및 계정 흐름을 계획하는 데 사용하는 경우 Capacitor를 사용하여 @capgo/capacitor-social-login Capacitor를 사용하여 @capgo/capacitor-social-login Capacitor를 사용하여 @capgo/capacitor-social-login Capacitor를 사용하여 @capgo/capacitor-passkey Capacitor를 사용하여 @capgo/capacitor-passkey Capacitor를 사용하여 @capgo/capacitor-native-biometric Capacitor를 사용하여 @capgo/capacitor-native-biometric for the implementation detail in @capgo/capacitor-native-biometric, and Capacitor 두 단계 인증 구현에 대한 구체적인 세부 정보입니다.