Keycloak
이 플러그인의 설치 단계와 전체 마크다운 가이드가 포함된 설정 프롬프트를 복사하세요.
개요
“개요” 섹션Keycloak은 내장된 범용 OAuth2 provider를 통해 동작합니다. Keycloak용 native provider를 새로 추가할 필요는 없습니다. Keycloak client를 OpenID Connect client로 설정한 뒤 provider: 'oauth2' 안정적인 providerId와 같은 keycloak.
Keycloak client 설정
“Keycloak client settings” 섹션Keycloak realm에서 Capacitor 앱이 사용하는 client를 생성하거나 여세요:
- authorization code flow를 사용하세요.
- 앱 설정에서 PKCE를 활성화 상태로 유지하세요.
- 앱에서 사용하는 모든 redirect URI를 등록하세요. 예:
myapp://oauth/keycloak모바일용 URI와 프로덕션 웹용 HTTPS callback URL. - 다음과 같은 scope를 사용하세요:
openid profile email. 추가하세요offline_accessrealm 및 client가 refresh token을 발행하도록 설정된 경우에만.
정확한 issuer URL은 배포 환경마다 다릅니다. 현재 Keycloak 배포에서는 일반적으로 realm metadata를 다음 위치에 게시합니다: https://keycloak.example.com/realms/my-realm/.well-known/openid-configuration하지만 일부 배포 환경에는 추가 base path가 포함될 수 있습니다. realm의 OpenID Endpoint Configuration에 표시된 issuer URL을 사용하세요.
OIDC discovery 예시
“OIDC discovery 예시” 섹션권장: issuerUrl 플러그인이 realm metadata에서 authorization, token, logout 엔드포인트를 찾을 수 있도록:
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 token의 경우, 다음을 요청하세요: offline_access Keycloak realm 및 client가 이 앱에 대해 refresh token을 허용하는 경우에만:
await SocialLogin.initialize({ oauth2: { keycloak: { appId: 'your-keycloak-client-id', issuerUrl: keycloakIssuer, redirectUrl: 'myapp://oauth/keycloak', scope: 'openid profile email offline_access', pkceEnabled: true, }, },});수동 엔드포인트 폴백
“Manual endpoint fallback” 섹션OIDC discovery가 차단되었거나 배포 환경에서 앱으로 메타데이터를 노출하지 않는 경우, 엔드포인트를 직접 설정하세요. 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`, }, },});Auth Connect 호환성
“Auth Connect 호환성” 섹션Keycloak은 Auth Connect의 프리셋 provider ID에 포함되어 있지 않습니다. 이미 SocialLoginAuthConnect를 사용 중이더라도, 일반 oauth2 provider를 초기화하여 provider: 'oauth2' 및 providerId: 'keycloak'.
참고하세요: 예제 앱의 Keycloak OpenID Connect 엔드포인트 참조 를 통해 discovery 및 엔드포인트 경로를 확인할 수 있습니다.
관련 문서
“관련 문서” 섹션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의 구현 세부 사항은, 2단계 인증 2단계 인증의 구현 세부 사항에 대해서는