Keycloak
LibreChat에서 사용자 인증을 위해 Keycloak을 구성하는 방법을 알아보세요.
- Keycloak 관리자 콘솔 액세스:
- 웹 브라우저에서 Keycloak Admin Console을 엽니다. 이는 일반적으로
http://localhost:8080/auth/admin/과 같은 URL에서 찾을 수 있습니다.
- 영역(Realm) 생성 (필요한 경우):
- 애플리케이션을 위한 렐름(realm)이 아직 없다면 하나 생성하세요. 'Add Realm'을 클릭하고 이름을 지정하세요.
- 클라이언트 생성:
- 사용자의 영역(realm) 내에서 'Clients'를 클릭한 다음 'Create'를 클릭하세요.
- 클라이언트 ID를 입력하고 클라이언트 프로토콜(Client Protocol)로 'openid-connect'를 선택하세요.
- 'Client Authentication'을 'On'으로 설정하세요.
- 'Valid Redirect URIs'에
http://localhost:3080/oauth/openid/callback또는 애플리케이션에 적절한 URI를 입력하세요.
- 클라이언트 구성:
- 클라이언트를 생성한 후, 해당 설정 페이지로 리디렉션됩니다.
- 'Credentials' 탭에서 'Client ID'와 'Secret'을 기록해 두세요. 애플리케이션에 이 정보가 필요합니다.
- 역할 추가 (선택 사항): 특정 역할을 가진 사용자에게만 접근을 제한하려면, Keycloak에서 역할을 정의하고 사용자에게 할당할 수 있습니다.
- 클라이언트 또는 영역(역할을 정의하려는 위치에 따라 다름)의 'Roles' 탭으로 이동합니다.
OPENID_REQUIRED_ROLE에 설정한 값과 일치하는 역할을 생성하세요.
- 사용자에게 역할 할당 (선택 사항):
- 'Users'로 이동하여 사용자를 선택한 다음, 'Role Mappings' 탭으로 이동하세요.
OPENID_REQUIRED_ROLE에 지정된 역할 중 하나 이상을 사용자에게 할당하세요.
- 토큰 내 역할 목록의 경로 가져오기 (선택 사항):
- OpenID 제공업체에서 발급한 jwtToken을 디코딩하여 액세스 토큰 내의 역할(roles) 목록 경로를 확인하세요. 예를 들어, Keycloak을 사용하는 경우 경로는
realm_access.roles입니다. - 이 경로를
.env파일의OPENID_REQUIRED_ROLE_PARAMETER_PATH변수에 넣으세요. OPENID_REQUIRED_ROLE_TOKEN_KIND매개변수를 통해 사용할 토큰 종류를 지정할 수 있습니다. 가능한 값은access와id입니다.
- 프로젝트 구성 업데이트:
- 프로젝트 폴더에서
.env파일을 열고 다음 변수들을 추가하세요:OPENID_ISSUER=http://localhost:8080/realms/[YourRealmName] OPENID_CLIENT_ID=[YourClientID] OPENID_CLIENT_SECRET=[YourClientSecret] OPENID_SESSION_SECRET=[JustGenerateARandomSessionSecret] OPENID_CALLBACK_URL=/oauth/openid/callback OPENID_SCOPE="openid profile email" OPENID_REQUIRED_ROLE=[YourRequiredRole] # Single role or comma-separated roles (e.g., role1,role2,admin) OPENID_REQUIRED_ROLE_TOKEN_KIND=(access|id) # that means, `access` or `id` OPENID_REQUIRED_ROLE_PARAMETER_PATH="realm_access.roles" # Optional: redirects the user to the end session endpoint after logging out OPENID_USE_END_SESSION_ENDPOINT=true # Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000) # OPENID_MAX_LOGOUT_URL_LENGTH=2000
이 가이드는 어떤가요?