메뉴로 바로가기

Keycloak

GitHub

개요

개요

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

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

  1. Use the authorization code flow.
  2. 앱이 사용하는 모든 리다이렉트 URI를 등록하세요. 예를 들어
  3. 예를 들어 myapp://oauth/keycloak 모바일과 HTTPS callback URL을 위해 프로덕션 웹을위한.
  4. 사용할 수 있는 범위는 openid profile email. offline_access 만약 여러분의 영역과 클라이언트가 리프레시 토큰을 발급할 수 있도록 구성되어 있다면만 추가하세요.

발급 URL은 배포에 따라 다릅니다. 현재 Keycloak 배포는 일반적으로 영역 메타데이터를 https://keycloak.example.com/realms/my-realm/.well-known/openid-configuration에서 공유합니다. 하지만 일부 배포는 추가적인 베이스 경로를 포함합니다. 여러분의 영역의 OpenID 엔드포인트 구성에서 보여지는 발급 URL을 사용하세요.

OIDC discovery 예시

OIDC discovery 예시

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

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

Keycloak의 OIDC 발견이 차단되거나 Keycloak의 메타데이터를 앱에 공개하지 않는 경우, 엔드포인트를 직접 구성합니다. 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`,
},
},
});

__CAPGO_KEEP_0__

__CAPGO_KEEP_2__

__CAPGO_KEEP_2__ SocialLoginAuthConnect__CAPGO_KEEP_3__ oauth2 __CAPGO_KEEP_4__ provider: 'oauth2' __CAPGO_KEEP_5__ providerId: 'keycloak'.

See the __CAPGO_KEEP_0__ OpenID Connect endpoint reference for discovery and endpoint paths.

If you are using __CAPGO_KEEP_0__ __CAPGO_KEEP_0__와 __CAPGO_KEEP_1__을 연결하여 인증 및 계정 흐름을 계획하세요. @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의 구현 세부 정보를 사용하여 두 가지 인증 방법을 사용합니다. 두 단계 인증 두 단계 인증의 구현 세부 정보를 사용하여