Azure Entra
LibreChat 사용자 인증을 위해 Azure Entra를 구성하는 방법을 알아보세요.
- Azure Portal로 이동하여 계정으로 로그인하세요.
- 검색 상자에 "Azure Entra"를 입력하고 클릭하세요.
- 왼쪽 메뉴에서 App registrations를 클릭한 다음 New registration을 클릭하세요.
- 앱에 이름을 지정하고 플랫폼 유형으로 Web을 선택하세요.
- Redirect URI 필드에 LibreChat OpenID 콜백 URL을 입력하고 Register를 클릭합니다. 로컬 Docker 설치의 경우
http://localhost:3080/oauth/openid/callback을 사용하세요. 배포된 인스턴스의 경우http://localhost:3080을 사용자의 공용DOMAIN_SERVER값으로 대체하세요(예:https://chat.example.com/oauth/openid/callback).
- 앱에 대한 몇 가지 정보가 포함된 개요(Overview) 페이지가 표시됩니다. 애플리케이션(클라이언트) ID(Application (client) ID)와 디렉터리(테넌트) ID(Directory (tenant) ID)를 복사하여 어딘가에 저장해 두세요.
- 왼쪽 메뉴에서 Authentication을 클릭하고 Implicit grant and hybrid flows 아래의 Access tokens 및 ID tokens 확인란을 선택하세요.
- 왼쪽 메뉴에서 Certificates & Secrets를 클릭한 다음 New client secret을 클릭합니다. 시크릿에 이름과 만료 날짜를 지정하고 Add를 클릭합니다. 시크릿이 포함된 Value 열이 표시됩니다. 이를 복사하여 안전한 곳에 저장하세요. 누구와도 공유하지 마세요!
- 그룹별로 액세스를 제한하려면 토큰에 groups 클레임을 추가해야 합니다. 이를 수행하려면 Token configuration으로 이동하여 Add group claim을 클릭하세요. 토큰에 포함할 그룹을 선택하고 Add를 클릭하세요.
- 프로젝트 폴더에서 .env 파일을 열고 복사한 값들을 사용하여 다음 변수들을 추가하세요:
DOMAIN_CLIENT=https://your-domain.com # use http://localhost:3080 if not using a custom domain
DOMAIN_SERVER=https://your-domain.com # use http://localhost:3080 if not using a custom domain
# enable social login or else OpenID button will not appear on login page
ALLOW_SOCIAL_LOGIN=true
OPENID_CLIENT_ID=Your Application (client) ID
OPENID_CLIENT_SECRET=Your client secret
OPENID_ISSUER=https://login.microsoftonline.com/Your Directory (tenant ID)/v2.0/
OPENID_SESSION_SECRET=Any random string
OPENID_SCOPE=openid profile email #DO NOT CHANGE THIS
OPENID_CALLBACK_URL=/oauth/openid/callback # this should be the same for everyone
OPENID_REQUIRED_ROLE_TOKEN_KIND=id
# If you want to restrict access by groups
OPENID_REQUIRED_ROLE_PARAMETER_PATH="roles"
OPENID_REQUIRED_ROLE="Your Group Name" # Single role or comma-separated roles (e.g., Group1,Group2,Admin)
# 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=2000Azure에 등록된 리디렉션 URI는 LibreChat이 서비스하는 URL과 정확히 일치해야 합니다. DOMAIN_SERVER=https://chat.example.com인 경우, Azure는 https://chat.example.com/oauth/openid/callback을 사용해야 합니다.
- .env 파일을 저장하세요
참고: Docker를 사용하는 경우,
docker compose up -d를 실행하여 .env 구성 변경 사항을 적용하세요.
고급: 토큰 재사용
LibreChat은 세션 관리를 위해 Azure Entra ID 토큰 재사용을 지원하며, 이를 통해 Azure 환경과의 더 나은 통합을 제공할 수 있습니다. 이 기능을 사용하면 LibreChat이 자체 세션 토큰을 관리하는 대신 Azure의 새로 고침 토큰(refresh tokens)을 사용할 수 있습니다.
이 기능과 구성 방법에 대해 자세히 알아보려면 Re-use OpenID Tokens for Login Session을 참조하세요.
고급: Microsoft Graph API 통합
Azure Entra ID를 OpenID 공급자로 사용할 때, Microsoft Graph API 통합을 활성화하여 사람 및 그룹 검색 기능으로 권한 및 공유 시스템을 향상시킬 수 있습니다.
필수 조건
- Azure 앱 등록에는 적절한 Microsoft Graph API 권한이 있어야 합니다.
- 특정 Graph API 범위(예:
GroupMember.Read.All)에 대해서는 관리자 동의가 필요할 수 있습니다.
Graph API 권한 추가
- Azure 앱 등록에서 API permissions로 이동하세요.
- Add a permission > Microsoft Graph > Delegated permissions을 클릭합니다.
- 다음 권한을 추가하세요:
User.Read- 로그인 및 사용자 프로필 읽기People.Read- 사용자 연락처 읽기GroupMember.Read.All- 모든 그룹 멤버십 읽기User.ReadBasic.All- 모든 사용자의 기본 프로필 읽기
- 필요한 경우 Grant admin consent를 클릭하세요(관리자 권한이 필요합니다).
구성
필수: 토큰 재사용 활성화
중요: 이 기능을 작동시키려면 OpenID 토큰 재사용을 활성화해야 합니다:
OPENID_REUSE_TOKENS=true자세한 내용은 위의 Token Reuse Configuration을 참조하세요.
.env 파일에 다음 환경 변수를 추가하세요:
# Enable Entra ID people search in permissions/sharing
USE_ENTRA_ID_FOR_PEOPLE_SEARCH=true
# Include group owners as members when searching groups
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=true
# Microsoft Graph API scopes (these are automatically included with the OpenID scopes)
OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All활성화되면, 권한 및 공유 대화 상자의 사용자 선택기(people picker)는 다음을 수행합니다:
- 로컬 LibreChat 사용자와 Azure Entra ID 사용자 모두 검색
- 조직의 이름과 이메일이 포함된 사용자 프로필을 표시합니다
- Azure Entra ID 그룹 검색 및 선택 허용
- Graph API 권한에 따라 그룹 멤버 표시
참고 사항
- 이 기능을 작동시키려면 토큰 재사용(
OPENID_REUSE_TOKENS=true)이 필수입니다. OPENID_GRAPH_SCOPES는 인증 과정 중에 기존OPENID_SCOPE에 자동으로 추가됩니다.- 그룹 검색에는
GroupMember.Read.All권한이 필요하며, 이는 일반적으로 관리자의 동의가 필요합니다. - 사용자 검색은 기본
User.Read,People.Read및User.ReadBasic.All권한으로 작동합니다.
고급: SharePoint 통합
LibreChat은 SharePoint Online 및 OneDrive for Business와 통합할 수 있어, 사용자가 SharePoint 라이브러리에서 직접 파일을 탐색하고 첨부할 수 있습니다.
필수 조건
- Token Reuse의 모든 요구 사항을 충족해야 합니다.
- Azure 앱 등록에 추가적인 SharePoint 권한이 필요합니다
- Azure 앱 등록은
api://<client-id>/access_as_user와 같은 LibreChat API 범위를 노출하고 부여해야 합니다.
SharePoint 권한 추가
- Azure 앱 등록에서 API permissions로 이동하세요.
- Add a permission을 클릭하세요
SharePoint 액세스:
- SharePoint(Microsoft Graph 아님)를 선택하세요
- Delegated permissions을 선택하세요
- 추가:
AllSites.Read- 모든 사이트 모음의 항목 읽기
파일 다운로드의 경우:
-
Add a permission을 다시 클릭하세요
-
Microsoft Graph를 선택하세요
-
Delegated permissions을 선택하세요
-
추가:
Files.Read.All- 사용자가 액세스할 수 있는 모든 파일 읽기 -
두 권한 모두에 대해 Grant admin consent를 클릭하세요.
구성
SharePoint 변수를 활성화하기 전에, OpenID 토큰 재사용 구성이 LibreChat 앱 API 범위를 요청하는지 확인하십시오. 이를 통해 Azure는 SharePoint 및 Graph 토큰 교환을 위한 대리(on-behalf-of) 어설션으로 사용할 수 있는 앱 대상(app-audience) 액세스 토큰을 제공합니다.
# OpenID token reuse and OBO-compatible audience
OPENID_REUSE_TOKENS=true
OPENID_SCOPE=openid profile email offline_access api://<client-id>/access_as_user
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
# Enable SharePoint file picker
ENABLE_SHAREPOINT_FILEPICKER=true
# Your SharePoint tenant URL
SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
# SharePoint scope for file picker (replace 'yourtenant' with your actual tenant)
SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read
# Graph API scope for downloading files
SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All사용법
올바르게 구성되면:
- 사용자는 파일 첨부 메뉴에서 "From SharePoint" 옵션을 보게 됩니다.
- 클릭하면 기본 SharePoint 파일 선택기가 열립니다
- 사용자는 자신이 액세스 권한을 가진 모든 SharePoint 사이트나 OneDrive에서 파일을 탐색하고 선택할 수 있습니다.
- 선택한 파일들이 다운로드되어 대화에 첨부됩니다.
보안 참고 사항
SharePoint 통합은 기존의 모든 SharePoint 권한을 준수합니다. 사용자는 SharePoint/OneDrive에서 이미 볼 수 있는 권한이 있는 파일에만 액세스할 수 있습니다.
자세한 문제 해결 및 고급 구성은 다음을 참조하세요: SharePoint Integration Guide
이 가이드는 어떤가요?