Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Keycloak

LibreChat에서 사용자 인증을 위해 Keycloak을 구성하는 방법을 알아보세요.

  1. Keycloak 관리자 콘솔 액세스:
  • 웹 브라우저에서 Keycloak Admin Console을 엽니다. 이는 일반적으로 http://localhost:8080/auth/admin/과 같은 URL에서 찾을 수 있습니다.
  1. 영역(Realm) 생성 (필요한 경우):
  • 애플리케이션을 위한 렐름(realm)이 아직 없다면 하나 생성하세요. 'Add Realm'을 클릭하고 이름을 지정하세요.
  1. 클라이언트 생성:
  • 사용자의 영역(realm) 내에서 'Clients'를 클릭한 다음 'Create'를 클릭하세요.
  • 클라이언트 ID를 입력하고 클라이언트 프로토콜(Client Protocol)로 'openid-connect'를 선택하세요.
  • 'Client Authentication'을 'On'으로 설정하세요.
  • 'Valid Redirect URIs'에 http://localhost:3080/oauth/openid/callback 또는 애플리케이션에 적절한 URI를 입력하세요.

image

image

image

  1. 클라이언트 구성:
  • 클라이언트를 생성한 후, 해당 설정 페이지로 리디렉션됩니다.
  • 'Credentials' 탭에서 'Client ID'와 'Secret'을 기록해 두세요. 애플리케이션에 이 정보가 필요합니다.

image

  1. 역할 추가 (선택 사항): 특정 역할을 가진 사용자에게만 접근을 제한하려면, Keycloak에서 역할을 정의하고 사용자에게 할당할 수 있습니다.
  • 클라이언트 또는 영역(역할을 정의하려는 위치에 따라 다름)의 'Roles' 탭으로 이동합니다.
  • OPENID_REQUIRED_ROLE에 설정한 값과 일치하는 역할을 생성하세요.

image

  1. 사용자에게 역할 할당 (선택 사항):
  • 'Users'로 이동하여 사용자를 선택한 다음, 'Role Mappings' 탭으로 이동하세요.
  • OPENID_REQUIRED_ROLE에 지정된 역할 중 하나 이상을 사용자에게 할당하세요.

image

  1. 토큰 내 역할 목록의 경로 가져오기 (선택 사항):
  • OpenID 제공업체에서 발급한 jwtToken을 디코딩하여 액세스 토큰 내의 역할(roles) 목록 경로를 확인하세요. 예를 들어, Keycloak을 사용하는 경우 경로는 realm_access.roles입니다.
  • 이 경로를 .env 파일의 OPENID_REQUIRED_ROLE_PARAMETER_PATH 변수에 넣으세요.
  • OPENID_REQUIRED_ROLE_TOKEN_KIND 매개변수를 통해 사용할 토큰 종류를 지정할 수 있습니다. 가능한 값은 accessid입니다.
  1. 프로젝트 구성 업데이트:
  • 프로젝트 폴더에서 .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

이 가이드는 어떤가요?