개요
basic auth 설치를 이 모드로 업그레이드할 수 있지만, none auth 설치는 업그레이드할 수 없습니다. 업그레이드하려면 basic auth 설정을 제거하고 아래에 표시된 필수 설정 파라미터를 추가하면 됩니다. 이후 사용자는 OAuth를 통해서만 로그인할 수 있습니다. 업그레이드 후에도 접근을 유지하려면, 이전에 basic auth로 로그인한 이메일 주소를 사용하여 OAuth로 로그인할 수 있어야 합니다.
LangSmith는 현재 self-hosted 환경에서 SSO에서 basic auth 모드로의 전환을 지원하지 않습니다. 또한, client secret이 있는 OAuth 모드에서 client secret이 없는 OAuth 모드로의 전환(및 그 반대)도 지원하지 않습니다. 마지막으로, basic auth와 OAuth를 동시에 사용하는 것도 지원하지 않습니다. OAuth를 활성화할 때 반드시 basic auth 설정을 비활성화하세요.
Client Secret 사용 (권장)
기본적으로 LangSmith Self-Hosted는Client Secret이 포함된 Authorization Code 플로우를 지원합니다. 이 플로우에서는 client secret이 LangSmith에 안전하게 저장되며(프론트엔드에는 저장되지 않음), 인증 및 인증 세션을 설정하는 데 사용됩니다.
사전 준비 사항
- Self-hosted 환경이며 Enterprise 플랜을 사용해야 합니다.
- IdP가
Client Secret이 포함된Authorization Code플로우를 지원해야 합니다. - IdP가 외부 discovery/issuer URL 사용을 지원해야 합니다. 이를 통해 IdP의 필요한 경로와 키를 가져옵니다.
- LangSmith에
OIDC,email,profilescope를 제공해야 합니다. 이를 통해 사용자 정보와 이메일을 가져옵니다.
LangSmith SSO는 오직
https를 통해서만 지원됩니다.설정 방법
- IdP에서 콜백 URL을
https://<host>/api/v1/oauth/custom-oidc/callback으로 설정해야 합니다. 여기서host는 LangSmith 인스턴스에 할당한 도메인 또는 IP입니다. 사용자가 인증을 마치면 IdP가 이 URL로 리디렉션합니다. values.yaml파일에oauthClientId,oauthClientSecret,hostname,oauthIssuerUrl을 입력해야 합니다. 여기서 LangSmith 인스턴스를 설정합니다.- 아직 client secret을 사용한 Oauth를 설정하지 않았거나 개인 조직만 있는 경우, 새로 생성되는 SSO 조직의 최초 관리자 이메일 주소를 지정해야 합니다. basic auth에서 업그레이드하는 경우 기존 조직이 재사용됩니다.
세션 길이 제어
이 섹션의 모든 환경 변수는
platform-backend 서비스용이며, Helm의 platformBackend.deployment.extraEnv를 통해 추가할 수 있습니다.- 기본적으로 세션 길이는 IdP에서 반환된 identity token의 만료로 제어됩니다.
- 대부분의 설정에서는 refresh token을 사용하여 identity token 만료 이후에도 세션 길이를
OAUTH_SESSION_MAX_SEC까지 연장할 수 있습니다. 이를 위해서는offline_accessscope를oauthScopes(Helm) 또는OAUTH_SCOPES(Docker)에 추가해야 할 수 있습니다. OAUTH_SESSION_MAX_SEC(기본값 1일)은 최대 1주(604800)까지 오버라이드할 수 있습니다.- refresh token을 지원하지 않는 IdP의 경우,
OAUTH_OVERRIDE_TOKEN_EXPIRY="true"로 설정하면 identity token 만료를 무시하고OAUTH_SESSION_MAX_SEC을 세션 길이로 사용합니다.
Sub Claim 오버라이드
특정 상황에서는 IdP에서 어떤 claim을sub claim으로 사용할지 오버라이드해야 할 수 있습니다.
예를 들어, SCIM에서는 로그인 성공을 위해 resolved sub claim과 SCIM externalId가 일치해야 합니다.
sub claim의 소스 attribute 또는 SCIM externalId에 제한이 있는 경우, ISSUER_SUB_CLAIM_OVERRIDES 환경 변수를 설정하여 어떤 OIDC JWT claim을 sub로 사용할지 선택할 수 있습니다.
issuer URL이 이 설정에 포함된 URL 중 하나로 시작하면, 지정된 필드 이름에서 sub claim을 가져옵니다.
예를 들어, 아래 설정에서는 issuer가 https://idp.yourdomain.com/application/uuid인 토큰은 customClaim 값을 sub로 사용합니다:
oid claim을 사용합니다:
Google Workspace IdP 설정
Google Workspace를 OAuth2.0 및 OIDC를 사용하여 PKCE 없이 SSO 제공자로 사용할 수 있습니다.조직의 Google Cloud Platform(GCP) 계정에 대한 관리자 권한이 있어야 새 프로젝트를 생성하거나, 기존 프로젝트에 대해 OAuth 2.0 자격 증명을 생성 및 구성할 수 있습니다. 각 GCP 프로젝트에는 하나의 OAuth 동의 화면만 있으므로, 접근 관리를 위해 새 프로젝트를 생성하는 것을 권장합니다.
- 새 GCP 프로젝트를 생성하세요. Google 문서의 프로젝트 생성 및 관리 항목을 참고하세요.
- 프로젝트를 생성한 후, Google API Console의 자격 증명 페이지를 엽니다(좌측 상단의 프로젝트가 올바른지 확인).
-
새 자격 증명 생성:
Create Credentials → OAuth client ID -
Application type을Web application으로 선택하고, 예를 들어LangSmith와 같이 애플리케이션 이름을 입력하세요. -
Authorized Javascript origins에는 LangSmith 인스턴스의 도메인을 입력하세요. 예:https://langsmith.yourdomain.com -
Authorized redirect URIs에는 LangSmith 인스턴스의 도메인 뒤에/api/v1/oauth/custom-oidc/callback을 붙여 입력하세요. 예:https://langsmith.yourdomain.com/api/v1/oauth/custom-oidc/callback -
Create를 클릭한 후, JSON을 다운로드하거나Client ID(.apps.googleusercontent.com으로 끝남)와Client secret을 안전한 곳에 복사 및 저장하세요. 나중에 다시 접근할 수 있습니다. -
좌측 네비게이션 메뉴에서
OAuth consent screen을 선택하세요.- Application type을
Internal로 선택하세요.Public을 선택하면 Google 계정이 있는 누구나 로그인할 수 있습니다. - 설명이 포함된
Application name을 입력하세요. 이 이름은 사용자가 로그인할 때 동의 화면에 표시됩니다. 예:LangSmith또는<organization_name> SSO for LangSmith. - Google API의 Scope 목록에 email, profile, openid만 있는지 확인하세요. SSO에 필요한 scope는 이 세 가지뿐입니다. 추가 scope를 부여하면 민감한 데이터 노출 위험이 증가합니다.
- Application type을
- (선택 사항) 조직 내에서 LangSmith 접근 권한을 제어하려면: https://admin.google.com/ac/owl/list?tab=configuredApps를 참고하세요. 자세한 내용은 Google 문서를 참고하세요.
-
LangSmith가 이 OAuth 애플리케이션을 사용하도록 설정하세요. 예시로, Kubernetes 설정에 사용할
config값은 다음과 같습니다:oauthClientId:Client ID(.apps.googleusercontent.com으로 끝남)oauthClientSecret:Client secrethostname: LangSmith 인스턴스의 도메인(예:https://langsmith.yourdomain.com, 슬래시 없이)oauthIssuerUrl:https://accounts.google.comoauth.enabled:trueauthType:mixed
Okta IdP 설정
지원 기능
- IdP-initiated SSO
- SP-initiated SSO
설정 단계
자세한 내용은 Okta의 문서를 참고하세요. 질문이나 문제가 있으면 [email protected]로 문의해 주세요.Okta Integration Network를 통한 설정(권장)
이 설정 방법은 Okta에서 SCIM을 사용하려면 반드시 필요합니다.
- Okta에 로그인하세요.
- 우측 상단에서 Admin을 선택하세요. 이 버튼은 Admin 영역에서는 보이지 않습니다.
Browse App Integration Catalog를 선택하세요.- LangSmith 애플리케이션을 찾아 선택하세요.
- 애플리케이션 개요 페이지에서 Add Integration을 선택하세요.
ApiUrlBase를 입력하세요:- LangSmith API URL에서 프로토콜(
https://)을 제외한 형태로<langsmith_domain>/api/v1로 입력합니다. 예:langsmith.yourdomain.com/api/v1 - 설치가 서브도메인/경로 프리픽스로 구성된 경우, 해당 경로를 URL에 포함하세요. 예:
langsmith.yourdomain.com/prefix/api/v1
- LangSmith API URL에서 프로토콜(
AuthHost는 비워둡니다.- (선택 사항, SCIM도 사용할 계획이라면)
LangSmithUrl을 입력하세요: 위에서 사용한<langsmith_url>, 예:langsmith.yourdomain.com - Application Visibility에서 박스를 체크하지 않습니다.
- Next를 선택하세요.
OpenID Connect를 선택하세요.Sign-On Options을 입력하세요:Application username format:EmailUpdate application username on:Create and updateAllow users to securely see their password: 체크하지 않습니다.
- Save를 클릭하세요.
- LangSmith가 이 OAuth 애플리케이션을 사용하도록 설정하세요(일반 설정 섹션에서
initialOrgAdminEmail에 대한 자세한 내용을 참고):
커스텀 앱 통합을 통한 설정
SCIM은 이 설정 방법과 호환되지 않습니다. Okta Integration Network를 통한 설정을 참고하세요.
- Okta에 관리자 계정으로 로그인하여 Okta Admin 콘솔로 이동하세요.
- Applications > Applications에서 Create App Integration을 클릭하세요.
- Sign-in method로 OIDC - OpenID Connect를, Application type으로 Web Application을 선택한 후 Next를 클릭하세요.
App integration name을 입력하세요(예:LangSmith).- 권장: Core grants > Refresh Token을 체크하세요(세션 길이 제어 참고).
- Sign-in redirect URIs에는 LangSmith 인스턴스의 도메인 뒤에
/api/v1/oauth/custom-oidc/callback을 붙여 입력하세요. 설치가 서브도메인/경로 프리픽스로 구성된 경우, 해당 경로를 포함하세요. 예:https://langsmith.yourdomain.com/prefix/api/v1/oauth/custom-oidc/callback - Sign-out redirect URIs의 기본 URI는 제거하세요.
- Trusted Origins > Base URIs에는 프로토콜을 포함한 langsmith URL을 추가하세요. 예:
https://langsmith.yourdomain.com - Assignments > Controlled access에서 원하는 옵션을 선택하세요:
- 조직 내 모든 사용자가 접근 가능
- 선택한 그룹에만 접근 허용
- 지금은 그룹 할당 건너뛰기
- Save를 클릭하세요.
- Sign On > OpenID Connect ID Token에서 Issuer를 Okta URL로 설정하세요.
- (선택 사항) General > Login에서 Login initiated by를
Either Okta or App으로 설정하여 IdP-initiated 로그인을 활성화하세요. - (권장) General > Login > Email verification experience에서 Callback URI에 LangSmith URL을 입력하세요. 예:
https://langsmith.yourdomain.com - LangSmith가 이 OAuth 애플리케이션을 사용하도록 설정하세요(일반 설정 섹션에서
initialOrgAdminEmail에 대한 자세한 내용을 참고):
SP-initiated SSO
사용자는 LangSmith 홈페이지의 Login via SSO 버튼을 통해 로그인할 수 있습니다.Client Secret 없이(PKCE) (사용 중단됨)
가능하다면Client Secret을 사용하는 것을 권장합니다(이전에는 지원하지 않았음). 하지만 IdP가 이를 지원하지 않는 경우, Authorization Code with PKCE 플로우를 사용할 수 있습니다.
이 플로우는 Client Secret이 필요하지 않습니다. 대체 워크플로우는 Client Secret 사용 섹션을 참고하세요.
요구 사항
LangSmith에서 OAuth SSO를 사용하려면 몇 가지 요구 사항이 있습니다:- IdP가
Authorization Code with PKCE플로우를 지원해야 합니다(예를 들어 Google은 이 플로우를 지원하지 않지만, 위에서 Google이 지원하는 대체 구성을 참고하세요). 일반적으로 OAuth Provider에서 “Single Page Application(SPA)” 구성으로 표시됩니다. - IdP가 외부 discovery/issuer URL 사용을 지원해야 합니다. 이를 통해 IdP의 필요한 경로와 키를 가져옵니다.
- LangSmith에
OIDC,email,profilescope를 제공해야 합니다. 이를 통해 사용자 정보와 이메일을 가져옵니다. - IdP에서 콜백 URL을
http://<host>/oauth-callback으로 설정해야 합니다. 여기서 host는 LangSmith 인스턴스에 할당한 도메인 또는 IP입니다. 사용자가 인증을 마치면 IdP가 이 URL로 리디렉션합니다. values.yaml파일에oauthClientId와oauthIssuerUrl을 입력해야 합니다. 여기서 LangSmith 인스턴스를 설정합니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.