내부적으로 Overleaf SAML 모듈은 passport-saml 라이브러리를 사용하며, 다음 구성 옵션의 대부분은 passport-saml로 그대로 전달됩니다. SAML 구성에 문제가 있다면 passport-saml의 README를 읽어 이 라이브러리가 기대하는 구성을 파악해 보는 것이 좋습니다.SAML 인증 모듈을 활성화하려면 EXTERNAL_AUTH 환경 변수가 필요합니다. 이 환경 변수는 활성화할 외부 인증 방법을 지정합니다. 이 변수의 값은 목록입니다. 목록에 saml이 포함되어 있으면 SAML 인증이 활성화됩니다.예: EXTERNAL_AUTH=ldap samlSAML 인증 방법을 사용하면 사용자는 Identity Provider(IdP) 인증 사이트로 리디렉션됩니다. IdP가 사용자를 성공적으로 인증하면, Overleaf 사용자 데이터베이스에서 다음과 같은 구조의 samlIdentifiers 필드를 포함하는 레코드를 확인합니다:
들어오는 SAML 응답의 서명을 검증하는 데 사용되는 Identity Provider 공개 인증서가 들어 있는 파일의 경로입니다. Identity Provider에 유효한 서명 인증서가 여러 개 있는 경우 인증서 경로의 JSON 배열로 지정할 수 있습니다.
예(인증서 하나): /var/lib/overleaf/certs/idp_cert.pem
예(인증서 여러 개): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
OVERLEAF_SAML_PUBLIC_CERT
IdP가 들어오는 SAML 요청의 서명을 검증할 수 있도록 인증 요청에 포함되는 공개 서명 인증서가 들어 있는 파일의 경로입니다. 전략이 OVERLEAF_SAML_PRIVATE_KEY로 구성된 경우 메타데이터 엔드포인트를 설정할 때 필요합니다. 인증서 교체를 지원하기 위해 인증서 경로의 JSON 배열을 제공할 수 있습니다. 인증서 배열을 제공하는 경우 배열의 첫 번째 항목은 현재 OVERLEAF_SAML_PRIVATE_KEY와 일치해야 합니다. 배열의 추가 항목은 OVERLEAF_SAML_PRIVATE_KEY를 변경하기 전에 향후 사용할 인증서를 IdP에 게시하는 데 사용할 수 있습니다.
OVERLEAF_SAML_PRIVATE_KEY
passport-saml이 보내는 인증 요청에 서명하는 데 사용되며, OVERLEAF_SAML_PUBLIC_CERT와 일치하는 PEM 형식 개인 키가 들어 있는 파일의 경로입니다.
수신된 암호화된 어설션의 복호화를 시도하는 데 사용되며, OVERLEAF_SAML_DECRYPTION_CERT와 일치하는 개인 키가 들어 있는 파일의 경로입니다.
OVERLEAF_SAML_SIGNATURE_ALGORITHM
요청 서명에 사용할 서명 알고리즘을 선택적으로 설정합니다. 유효한 값은 ‘sha1’(기본값), ‘sha256’(권장), ‘sha512’(가장 안전함, IdP가 지원하는지 확인 필요)입니다.
OVERLEAF_SAML_ADDITIONAL_PARAMS
모든 요청에 추가할 쿼리 매개변수의 JSON 딕셔너리입니다.
OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
‘authorize’ 요청에 추가할 쿼리 매개변수의 JSON 딕셔너리입니다.
예: {"some_key": "some_value"}
OVERLEAF_SAML_IDENTIFIER_FORMAT
Identity Provider에 요청할 이름 식별자 형식입니다(기본값: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). urn:oasis:names:tc:SAML:2.0:nameid-format:persistent를 사용하는 경우 OVERLEAF_SAML_EMAIL_FIELD 환경 변수가 정의되어 있는지 확인하세요. urn:oasis:names:tc:SAML:2.0:nameid-format:transient가 필요한 경우 OVERLEAF_SAML_USER_ID_FIELD 환경 변수도 정의해야 하며, 예를 들어 사용자의 이메일 주소로 설정할 수 있습니다.
OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
OnBefore 및 NotOnOrAfter 어설션 조건의 유효성 타임스탬프를 확인할 때 클라이언트와 서버 간에 허용되는 시간 차이(밀리초)입니다. -1로 설정하면 이러한 조건 확인이 완전히 비활성화됩니다. 기본값은 0입니다.
OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
IdP가 응답에 어떤 속성 집합을 첨부할지 지시하기 위해 AuthnRequest에 추가하는 AttributeConsumingServiceIndex 속성입니다(링크).
OVERLEAF_SAML_AUTHN_CONTEXT
인증 컨텍스트를 요청할 이름 식별자 형식 값의 JSON 배열입니다. 기본값: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
OVERLEAF_SAML_FORCE_AUTHN
true이면 서비스 공급자의 초기 SAML 요청에서 사용자가 유효한 세션을 가지고 있더라도 IdP가 사용자를 강제로 재인증하도록 지정합니다.
OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
true이면 특정 인증 컨텍스트를 요청하지 않습니다. 예를 들어 비밀번호 없는 로그인(urn:oasis:names:tc:SAML:2.0:ac:classes:X509) 같은 추가 컨텍스트를 허용하려면 이 값을 true로 설정할 수 있습니다. 추가 컨텍스트 지원 여부는 IdP에 따라 다릅니다.
OVERLEAF_SAML_AUTHN_REQUEST_BINDING
HTTP-POST로 설정하면 HTTP POST 바인딩을 통해 IdP에 인증을 요청하며, 그렇지 않으면 기본값인 HTTP-Redirect를 사용합니다.
OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
always이면 들어오는 SAML 응답에서 InResponseTo를 검증합니다.
never이면 InResponseTo를 검증하지 않습니다(기본값).
ifPresent이면 들어오는 SAML 응답에 InResponseTo가 있는 경우에만 검증합니다.
OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED 및 OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
true(기본값)로 설정하면 Overleaf는 각각 SAML 어설션 및 전체 SAML 인증 응답이 IdP에 의해 서명되어 있을 것으로 기대합니다. 두 옵션이 모두 false이면 어설션 또는 응답 중 적어도 하나는 서명되어 있어야 합니다.
OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
SAML 요청에 대해 생성된 Request ID가 SAML 응답의 InResponseTo 필드에 나타났을 때 더 이상 유효하지 않게 되는 만료 시간을 정의합니다. 기본값: 28800000(8시간).
OVERLEAF_SAML_IS_ADMIN_FIELD 및 OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
두 환경 변수가 모두 설정된 경우, SAML IdP가 반환한 프로필에 OVERLEAF_SAML_IS_ADMIN_FIELD로 지정한 속성이 있고 그 값이 OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE와 일치하거나 OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE를 포함하는 배열이면 로그인 과정에서 user.isAdmin = true로 업데이트되고, 그렇지 않으면 user.isAdmin이 false로 설정됩니다. 이 변수 중 하나라도 설정되지 않은 경우 관리자 상태는 Launchpad에서 관리자 사용자를 생성할 때만 true로 설정됩니다.
Identity Provider용 메타데이터현재 버전의 Overleaf CE에는 Service Provider 메타데이터를 가져오는 엔드포인트가 포함되어 있습니다: http://my-overleaf-instance.com/saml/metaIdentity Provider가 Overleaf 서버를 “Service Provider”로 인식하도록 구성해야 합니다. 구성 방법은 사용 중인 SAML 서버의 문서를 참조하세요.다음은 적절한 Service Provider 메타데이터의 예시입니다:
인증서, AssertionConsumerService.Location, SingleLogoutService.Location, EntityDescriptor.entityID를 확인하여 IdP 구성에 적절히 설정하거나, 메타데이터 파일을 IdP 관리자에게 보내세요.
variables.env 파일 예시(최소)
OVERLEAF_APP_NAME="Our Overleaf Instance"ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url# Enables Thumbnail generation using ImageMagickENABLE_CONVERSIONS=true# Disables email confirmation requirementEMAIL_CONFIRMATION_DISABLED=true## Nginx# NGINX_WORKER_PROCESSES=4# NGINX_WORKER_CONNECTIONS=768## Set for TLS via nginx-proxy# OVERLEAF_BEHIND_PROXY=true# OVERLEAF_SECURE_COOKIE=trueOVERLEAF_SITE_URL=http://my-overleaf-instance.comOVERLEAF_NAV_TITLE=Our Overleaf Instance# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.pngOVERLEAF_ADMIN_EMAIL=support@example.comOVERLEAF_LEFT_FOOTER=[{"text": "Contact your support team", "url": "mailto:support@example.com"}]OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "url":"https://github.com/yu-i-i/overleaf-cep"}]OVERLEAF_EMAIL_FROM_ADDRESS=team@example.comOVERLEAF_EMAIL_SMTP_HOST=smtp.example.comOVERLEAF_EMAIL_SMTP_PORT=587OVERLEAF_EMAIL_SMTP_SECURE=false# OVERLEAF_EMAIL_SMTP_USER=# OVERLEAF_EMAIL_SMTP_PASS=# OVERLEAF_EMAIL_SMTP_NAME=OVERLEAF_EMAIL_SMTP_LOGGER=falseOVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=trueOVERLEAF_EMAIL_SMTP_IGNORE_TLS=falseOVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department xOVERLEAF_PROXY_LEARN=trueNAV_HIDE_POWERED_BY=true################### SAML ###################EXTERNAL_AUTH=samlOVERLEAF_SAML_ISSUER=MyOverleafOVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'OVERLEAF_SAML_EMAIL_FIELD=EmailOVERLEAF_SAML_FIRST_NAME_FIELD=DisplayNameOVERLEAF_SAML_LAST_NAME_FIELD=DisplayNameOVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_OverleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_SIGNATURE_ALGORITHM=
여기서는 goauthentik에서 테스트를 거친 설정 과정을 단계별로 안내합니다. https://overleaf.example.com은 사용 중인 OVERLEAF_SITE_URL로, https://authentik.example.com은 사용 중인 Authentik의 주소로 바꾸세요.
1
공급자와 애플리케이션 만들기
Authentik에서 Applications > Applications를 열고 New Application을 클릭합니다. 마법사가 애플리케이션과 해당 공급자를 함께 만듭니다.1. 애플리케이션에 이름과 슬러그(예: overleaf)를 지정하고 Next를 클릭합니다:
관리자 플래그는 SAML 로그인 때마다 업데이트됩니다. 필드나 값이 잘못되면 SAML로 로그인하는 모든 관리자가 관리자 권한을 잃게 됩니다. 먼저 두 번째 관리자 계정으로 매핑을 테스트하세요.
goauthentik용으로 테스트된 variables.env
variables.env
EXTERNAL_AUTH=samlOVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_ISSUER=overleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=trueOVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=trueOVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressOVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameOVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/GroupOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
마지막 수정일 2026년 10월 6일
이 페이지가 도움이 되었나요?
Assistant
Responses are generated using AI and may contain mistakes.