콘텐츠로 이동

LDAP 싱글 사인온

LDAP(Lightweight Directory Access Protocol)은 다양한 디렉터리 서비스를 처리하기 위한 애플리케이션 프로토콜입니다. Microsoft Entra ID는 Microsoft Entra 도메인 서비스(AD DS)를 통해 이 방식을 지원합니다.

Guance배포 플랜은 LDAP 서비스를 보유한 사용자가 이 프로토콜을 통해 원클릭으로 로그인할 수 있도록 지원합니다. 다음은 필요한 구성 필드입니다:

필드 설명
host LDAP 서버 도메인 이름, 지원 형식:
  • 도메인 이름
  • 프로토콜이 포함된 주소: ldap://xxx & ldaps://xxx
  • port 서비스 포트, host 의 포트가 이 매개변수를 기본적으로 덮어씁니다.
    baseDN 기본 디렉터리 위치. [필드 개념 설명] 참조
    bindDN LDAP 서비스와 연결을 설정할 때 인증에 사용되는 사용자 이름 정보(DN 인터페이스).
    searchAttribute 다른 계정을 검색할 때 계정을 필터링하는 데 사용되는 항목 이름입니다. 이 항목 이름은 사용자가 입력한 사용자 이름과 함께 DIT 항목 정보를 구성합니다. (이 값은 사용자 이름을 기준으로 고유 사용자를 확인할 수 있습니다.)
    bindPassword LDAP 서비스와 연결을 설정할 때 인증에 사용되는 비밀번호 정보.
    mapping 계정 속성에서 Guance로 매핑해야 하는 속성 필드 매핑 정보입니다.

    LDAP에서 제공하는 계정 속성에 해당하는 속성 값은 일반적으로 목록입니다. Guance에서 속성 값이 배열/목록 구조인 경우 기본적으로 첫 번째 요소를 값으로 사용하여 처리합니다. [필드 개념 설명 > 2. 계정 속성 필드] 참조
    필드 개념 설명
    1. 디렉터리 정보 트리(DIT): DIT는 파일 시스템과 유사한 계층 구조입니다. 항목을 식별하려면 DIT에서 항목을 나타내는 리프부터 트리 상단까지의 경로를 지정해야 합니다. 이 경로를 항목의 고유 이름(DN)이라고 합니다.

      • 항목의 고유 이름(DN): 항목의 이름과 값의 키-값 쌍(쉼표로 구분)으로 구성되며, 리프에서 트리 상단까지의 경로를 구성합니다. 항목의 DN은 전체 DIT에서 고유하며, 항목이 DIT 내의 다른 컨테이너로 이동된 경우에만 변경됩니다.
    2. 계정 속성 필드:

    Guance의 계정 속성 Guance측 필드 설명 LDAP 서비스 측에서 제공하는 계정 속성, ldap3 변환 후의 속성(기본 필드)
    username 인증 서비스에서 로그인 계정의 이메일 필드 이름, 필수 mail
    email 인증 서비스에서 로그인 계정의 사용자 이름 필드 이름, 필수, 값이 없는 경우 email 사용 uid
    mobile 인증 서비스에서 로그인 계정의 전화번호 필드 이름, 선택 사항 mobile
    exterId 인증 서비스에서 로그인 계정의 고유 식별자 필드 이름, 필수 uid

    구성 상세

    Guance Launcher 네임스페이스: forethought-core > core 에 다음 구성을 추가하고, 구성 변수 값을 조정해야 합니다:

    # LDAP 클라이언트 구성(구성 본체 참조: https://ldap3.readthedocs.io/en/latest/server.html)
    LDAPClientSet:
      # LDAP 활성화 여부, 기본적으로 비활성화
      enable: false
      # server 매개변수 형식은 https://ldap3.readthedocs.io/en/latest/server.html 따름
      server:
        # LDAP 서버 도메인 이름, 도메인 이름 또는 ldap://xxx 또는 ldaps://xxx 가능
        host: "ipa.demo1.freeipa.org"
        # 연결 타임아웃 시간
        connect_timeout: 6
        # SSL 활성화 여부 제어
        use_ssl: false
        # 서버 스키마 및 서버 특정 정보를 반드시 읽어야 하는지 지정 (기본값: SCHEMA). 선택적 값 설명: https://ldap3.readthedocs.io/en/latest/server.html#server-object
        get_info: "SCHEMA"
        tls:
          # 기본값 없음; 클라이언트 개인 키를 포함하는 파일 경로
          local_private_key_file:
          # 기본값 없음; 서버 인증서의 파일 경로
          local_certificate_file:
          # 기본값 없음; 인증 기관 인증서를 포함하는 파일 경로
          ca_certs_file:
          # 기본값 없음; 사용해야 하는 암호를 지정하는 문자열. 최신 Python 인터프리터에 적용되며 SSLContext 또는 wrap_socket() 메서드의 암호를 변경할 수 있습니다. 이전 버전에서는 무시됩니다. 기본값 없음
          ciphers:
          # 서버 인증서를 확인해야 하는지 여부 지정, 선택값: CERT_NONE(인증서 무시), CERT_OPTIONAL(필수는 아니지만 제공되면 확인), CERT_REQUIRED(필수 및 확인)
          validate: "CERT_REQUIRED"
          # 사용할 SSL 또는 TLS 버전, 다음 중 하나 가능: SSLv2, SSLv3, SSLv23, TLSv1 (Python 3.3 기준. 버전 목록은 다른 Python 버전에서 다를 수 있음), 현재 기본값 TLS 1.2
          version: "PROTOCOL_TLSv1_2"
      connection:
        # 기본값 없음; Active Directory 액세스: ldap3를 사용하면 NTLM v2 프로토콜을 사용하여 Active Directory 서버에 연결할 수도 있음, 이 경우 NTLM으로 설정 가능
        authentication:
        # authentication, sasl_mechanism 및 sasl_credentials는 여기서 https://ldap3.readthedocs.io/en/latest/bind.html?highlight=Active%20Directory#digest-md5 따라야 함
        # 기본값 없음; Active Directory 액세스 시 sasl_mechanism은 DIGEST_MD5 가능; 기본값 없음
        sasl_mechanism:
        # Active Directory 액세스 시 필요
        # DIGEST-MD5 메커니즘을 사용하려면 4개 또는 5개 값의 튜플을 sasl_credentials로 전달해야 함: (realm, user, password, authz_id, enable_signing). 사용하지 않는 경우 'realm', 'authz_id' 및 'enable_signing'에 None 전달 가능:
        sasl_credentials:
      # 표준 연결 위에 TLS 활성화 여부; true인 경우 ldap 연결 후 TLS 확인 및 활성화
      startTls: false
      baseDN: "dc=demo1,dc=freeipa,dc=org"
      bindDN: "uid=admin,cn=users,cn=accounts,dc=demo1,dc=freeipa,dc=org"
      bindPassword: "Secret123"
      # 계정 검색에 사용되는 속성; 방법 1: `searchAttribute: uid` 속성 필드 이름만 지정; 방법 2: `searchAttribute: "(uid={username})"` 사용자 정의 필터 문, 이 방법에서 괄호와 중괄호 안의 username은 필수
      # 참고: AD 사용자인 경우 일반적으로 sAMAccountName으로 설정
      searchAttribute: "uid"
      # 계정 검색 시 계정 정보에 해당하는 클래스 이름. 참고: 연동 대상이 Microsoft AD의 LDAP인 경우 여기는 persion이어야 함
      # 확인 방법: `ldapsearch`(타사 LDAP 연결 도구) 설치 후 `ldapsearch -x -H ldap://xxx.cn:389 -D "bindDN 정보" -w "bindPassword 정보" -b "baseDN 내용" "(cn=대상 사용자)"` 명령 실행, 반환 결과의 objectClass가 선택 가능한 목록
      personObjectClass: "inetOrgPerson"
      mapping:
        # 인증 서비스에서 로그인 계정의 사용자 이름 필드 이름, 필수, 값이 없는 경우 email 사용
        username: uid
        # 인증 서비스에서 로그인 계정의 이메일 필드 이름, 필수
        email: mail
        # 인증 서비스에서 로그인 계정의 전화번호 필드 이름, 선택 사항
        mobile: mobile
        # 인증 서비스에서 로그인 계정의 고유 식별자 필드 이름, 필수
        exterId: uid
    

    SSL을 사용하지 않는 경우 내부 네트워크에서 LDAP 서비스에 액세스하는 구성 예시:

    # LDAP 클라이언트 구성(구성 본체 참조: https://ldap3.readthedocs.io/en/latest/server.html)
    LDAPClientSet:
      # LDAP 활성화 여부, 기본적으로 비활성화
      enable: true
      # server 매개변수 형식은 https://ldap3.readthedocs.io/en/latest/server.html 따름
      server:
        # LDAP 서버 도메인 이름, 도메인 이름 또는 ldap://xxx 또는 ldaps://xxx 가능
        # 로컬 개발 주소 hosts 바인딩: 172.16.211.111 openldap-server
        host: "<域名 、 协议+域名+端口>"
        # 서버 스키마 및 서버 특정 정보를 반드시 읽어야 하는지 지정 (기본값: SCHEMA). 선택적 값 설명: https://ldap3.readthedocs.io/en/latest/server.html#server-object
        get_info: "ALL"
      # 기본 DN 정보
      baseDN: "<基础DN>"
      # 클라이언트 연결 시 바인딩되는 DN
      bindDN: "<客户端建立连接时绑定的DN>"
      # bindDN에 해당하는 비밀번호
      bindPassword: "<与 bindDN 对应的密码>"
      # 계정 검색에 사용되는 속성
      searchAttribute: cn
      # 계정 검색 시 계정 정보에 해당하는 클래스 이름. 참고: 연동 대상이 Microsoft AD의 LDAP인 경우 여기는 persion이어야 함
      # 확인 방법: `ldapsearch`(타사 LDAP 연결 도구) 설치 후 `ldapsearch -x -H ldap://xxx.cn:389 -D "bindDN 정보" -w "bindPassword 정보" -b "baseDN 내용" "(cn=대상 사용자)"` 명령 실행, 반환 결과의 objectClass가 선택 가능한 목록
      personObjectClass: "inetOrgPerson"
      # 계정 속성이 아래 표와 일치하지 않는 경우 조정 필요
      mapping:
        # 인증 서비스에서 로그인 계정의 사용자 이름 필드 이름, 필수, 값이 없는 경우 email 사용
        username: cn
        # 인증 서비스에서 로그인 계정의 이메일 필드 이름, 필수
        email: mail
        # 인증 서비스에서 로그인 계정의 전화번호 필드 이름, 선택 사항
        mobile: mobile
        # 인증 서비스에서 로그인 계정의 고유 식별자 필드 이름, 필수
        exterId: cn
    

    LDAP 싱글 사인온을 사용하여 Guance에 로그인

    위 구성이 추가되면 LDAP 싱글 사인온을 사용하여 Guance에 로그인할 수 있습니다.

    1) Guance배포 플랜의 로그인 주소를 열고 로그인 페이지에서 LDAP 로그인을 선택합니다.

    2) LDAP 서버에서 사용하는 사용자 이름과 비밀번호를 입력합니다.

    3) Guance의 해당 워크스페이스에 로그인합니다.

    추가 참고 자료

    문서 평가

    이 페이지가 도움이 되었나요?