Keycloak
설치
개요
개요 제목Keycloak은 내장된 일반 OAuth2 제공자로 작동합니다. Keycloak에 대한 새로운 네이티브 제공자가 필요하지 않습니다. Keycloak 클라이언트를 OpenID Connect 클라이언트로 구성하고 사용하세요. provider: 'oauth2' 안정적인 providerId예를 들어 keycloak.
Keycloak 클라이언트 설정
Keycloak 영역에서 앱을 사용하는 클라이언트를 생성하거나 열어주세요:인증 Capacitor 흐름을 사용하세요.
- code
- PKCE를 앱 설정에서 활성화하세요.
- 앱이 사용하는 모든 리다이렉트 URI를 등록하세요. 예를 들어
myapp://oauth/keycloak모바일과 HTTPS callback URL을 프로덕션 웹에서 사용하세요. - scopes를 사용하세요. 예를 들어
openid profile emailrefresh 토큰이 발급될 때만 사용하세요.offline_accessrealm과 client가 리프레시 토큰을 발급할 수 있도록 구성되어야 합니다.
issuer URL은 배포에 따라 다릅니다. 현재 Keycloak 배포에서는 realm 메타데이터를 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 메타데이터에서 인증, 토큰, 로그아웃 엔드포인트를 자동으로 발견할 수 있도록 하세요.
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
수동 엔드포인트 fallbackOIDC 디스커버리가 차단되거나 앱에 메타데이터를 노출하지 않는 경우, 엔드포인트를 직접 구성합니다. 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 엔드포인트 참조 관련 문서
Section titled “관련 문서”
OAuth2 및 OIDC 제공자Section titled “Keycloak에서 계속”
OAuth2 and OIDC providersKeycloak을 사용하는 경우 Keycloak 인증 및 계정 흐름을 계획하는 경우 Keycloak을 연결하세요. Using @capgo/capacitor-social-login for the native capability in Using @capgo/capacitor-social-login, @capgo/capacitor-social-login for the implementation detail in @capgo/capacitor-social-login, @capgo/capacitor-passkey for the implementation detail in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric @capgo/@capacitor-social-login @__CAPGO_KEEP_0__/@__CAPGO_KEEP_1__-passkey 두 단계 인증 구현 세부 사항에 대한 정보입니다.