en
지원하는 언어
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
AI 번역
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

LDAP 인증

LDAP

LDAP 인증을 구성하는 방법

살펴보기
LDAP 인증 모드 선언
즉석 사용자 생성
그룹 기반 LDAP 로그인
문제해결
코너 상황

 

살펴보기

LDAP(Lightweight Directory Access Protocol)는 공용 인터넷이든 회사 인트라넷이든 관계없이 누구나 조직, 개인 및 네트워크의 파일 및 장치와 같은 기타 리소스를 찾을 수 있도록 하는 소프트웨어 프로토콜입니다. LDAP는 네트워크의 디렉토리 서비스 표준인 X.500의 일부인 DAP(디렉토리 액세스 프로토콜)의 "경량"(더 적은 양의 코드) 버전입니다. LDAP는 초기 버전에서 보안 기능을 포함하지 않았기 때문에 더 가볍습니다. Easy Redmine은 기본적으로 하나 이상의 LDAP 디렉토리를 사용하여 LDAP 인증을 지원합니다. 지원되는 디렉토리 서비스 유형에는 Active Directory, OpenLDAP, eDirectory, Sun Java System Directory Server 및 기타 호환 가능한 디렉토리 서비스가 포함됩니다.

LDAP 디렉토리는 다음 레벨로 구성된 간단한 "트리"계층 구조로 구성됩니다.

  1. 루트 디렉토리 (시작 위치 또는 트리의 소스)
  2. 각 국가에 진출하는 국가
  3. 분기하는 조직
  4. 다음으로 분기되는 조직 구성 단위 (본부, 부서 등)
  5. 개인 (사람, 파일 및 프린터와 같은 공유 리소스 포함)

 

LDAP 인증 모드 선언

관리로 이동하여 메뉴에서 "LDAP 인증"을 클릭하십시오. 여기에는 테스트 또는 삭제 옵션을 포함하여 기존의 모든 LDAP 인증 모드 목록이 있습니다. 새로 만들려면 오른쪽 상단 모서리에있는 "새 인증 모드"녹색 버튼을 클릭하십시오.

LDAP 서비스 제공자는 URL을 사용하여 디렉토리 서버에 대한 연결을 구성합니다. LDAP 연결 URL을 생성하려면 다음 필드를 지정해야합니다.

  • 이름: 디렉토리의 임의의 이름입니다.
  • 호스트 : LDAP 호스트 이름 (테스트 서버).
  • 포트 : LDAP 포트 (기본값은 389)입니다.
  • LDAPS : 디렉토리에 액세스하기 위해 LDAPS를 사용하거나 필요로하는 경우이를 확인하십시오.
  • 계정: LDAP에 대한 읽기 권한이있는 사용자 이름을 입력하십시오. 그렇지 않으면 LDAP를 익명으로 읽을 수있는 경우이 필드를 비워 두십시오 (Active Directory 서버는 일반적으로 익명 액세스를 허용하지 않음).
  • 암호: 계정의 비밀번호입니다.
  • 기본 DN : LDAP 디렉토리 트리의 최상위 DN (예 : dc = example, dc = com)
  • LDAP 필터 : 필터를 사용하여 애플리케이션에 액세스 할 수있는 사용자 또는 그룹 수를 제한 할 수 있습니다. 본질적으로 필터는 애플리케이션이 동기화하는 LDAP 트리 부분을 제한합니다. 필터는 사용자 및 그룹 구성원 모두에 대해 작성 될 수 있으며 작성되어야합니다. 이렇게하면 액세스 할 필요가없는 사용자 및 그룹으로 애플리케이션이 넘치지 않습니다.
     

    샘플 필터

    (경고) 이 필터는 Active Directory 용으로 작성되었습니다. OpenLDAP와 같은 용도로 사용하려면 속성을 변경해야합니다.

    'CaptainPlanet'그룹의 사용자 만 동기화합니다. 사용자 객체 필터:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    그리고 직접 또는 중첩을 통해이 그룹의 구성원 인 사용자를 검색합니다.

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    (정보) Active Directory가 갖는 중요한 사항 memberOf : 1.2.840.113556.1.4.1941 CaptainPlanet 그룹 내에서 중첩 된 그룹을 찾으려면 (숫자 문자열을 바꾸지 마십시오).

    4 개 그룹 (화재, 바람, 물, 심장) 중 하나 또는 모두의 구성원 인 사용자를 검색합니다.

    (&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=cn=fire,ou=users,dc=company,dc=com)(memberOf=cn=wind,ou=users,dc=company,dc=com)(memberOf=cn=water,ou=users,dc=company,dc=com)(memberOf=cn=heart,ou=users,dc=company,dc=com)))
  • 시간 초과 (초) : 지정된 기간 내에 LDAP 공급자가 LDAP 응답을받지 못하면 읽기 시도가 중단됩니다. 정수는 XNUMX보다 커야합니다. XNUMX보다 작거나 같은 정수는 읽기 시간 초과가 지정되지 않았으며 응답이 수신 될 때까지 응답을 무한정 대기하는 것과 같으며 기본값은 원래 동작입니다. 이 특성을 지정하지 않으면 기본값은 응답이 수신 될 때까지 기다리는 것입니다.
  • 즉각적인 사용자 생성 : 이를 선택하면 모든 LDAP 사용자가 Easy Redmine에 처음 로그인할 때 Easy Redmine 계정이 자동으로 생성됩니다. 그렇지 않으면 로그인하려는 각 LDAP 사용자에 대해 Easy Redmine에서 사용자를 수동으로 생성해야 합니다.

속성 ():

  • 로그인 속성 : 사용자가 로그인하고 인증되는 로그인 이름입니다.
  • 이름 속성 : 이름의 속성.
  • 성 속성 : 성의 속성입니다.
  • 이메일 속성 : 이메일 주소의 속성입니다.

Easy Redmine 사용자는 이제 계정이 인증에 LDAP를 사용하도록 설정된 경우 LDAP 사용자 이름과 비밀번호를 사용하여 인증할 수 있습니다(사용자 프로필 편집 시 "인증 모드" 설정 확인).

이를 테스트하려면 LDAP 계정과 일치하는 로그인으로 Easy Redmine 사용자를 생성하고(일반적으로 Easy Redmine은 LDAP 데이터를 조회하여 알려줍니다) 인증 모드 드롭다운 목록에서 새로 생성된 LDAP를 선택합니다(이 필드는 LDAP가 선언된 경우에만 계정 화면에 표시됨) 암호를 비워 둡니다. LDAP 사용자 이름과 비밀번호를 사용하여 Easy Redmine에 로그인을 시도하십시오.

 

즉석 사용자 생성

확인하여 즉각적인 사용자 생성, 모든 LDAP 사용자는 Easy Redmine에 처음 로그인할 때 Easy Redmine 계정이 자동으로 생성됩니다.
이를 위해 Easy Redmine 계정을 만드는 데 사용할 LDAP 속성 이름(이름, 성, 이메일)을 지정해야 합니다.

다음은 Active Directory를 사용하는 일반적인 예입니다.

이름 = 내 디렉터리 호스트 = host.domain.org 포트 = 389 LDAPS = 계정 없음 = MyDomain \ UserName (또는 AD 서버에 따라 UserName @ MyDomain) 암호 ​​= 기본 DN = CN = users, DC = host, DC = domain, DC = org On-the-fly 사용자 생성 = yes 속성 로그인 = sAMAccountName 이름 = givenName 성 = sN 이메일 = 메일

구획화 된 인트라넷이있는 Active Directory의 또 다른 예는 다음과 같습니다.

이름 = 인증 모드 페이지에 대한 설명입니다. 호스트 = DepartmentName.OrganizationName.local 포트 = 389 LDAPS = 계정 없음 = DepartmentName \ UserName (또는 AD 서버에 따라 UserName @ MyDomain 또는 바인드 DN uid = Manager, cn = users, dc = MyDomain, dc = com) 비밀번호 = 기본 DN = DC = DepartmentName, DC = OrganizationName, DC = local On-the-fly 사용자 생성 = 예 속성 로그인 = sAMAccountName 이름 = givenName 성 = sN 이메일 = 메일

LDAP 속성 이름은 대소 문자 구분.

동적 바인드 계정

위의 설정은 Easy Redmine이 사전 인증에 사용하는 디렉토리 서버에 대한 특수 계정이 필요합니다. 키워드를 사용할 수 있습니다. $ 로그인 계정 필드에 현재 로그인으로 바뀝니다. 이 경우 비밀번호를 비워 둘 수 있습니다. 예를 들면 다음과 같습니다.

계정 : $login@COMPANY.DOMAIN.NAME

or

계정 : company \ $ login

기본 DN 변형

위의 기본 DN이 Active Directory의 표준 일 수는 있지만, 고용주의 사이트에있는 Active Directory는 표준 사용자에 대해 사용자 컨테이너를 사용하지 않으므로 이러한 지침이 길고 고통스러운 길을 안내해줍니다. 또한 설정에 로그인이 실패하면 "DC = host, DC = domain, DC = org"를 시도하는 것이 좋습니다.

 

그룹 기반 LDAP 로그인

특정 LDAP 그룹에 속한 사용자에게만 로그인을 허용하려면 아래 지침을 따라야 합니다. OpenLDAP LDAP 서버와 Easy Redmine을 기반으로 합니다.

1. (OpenLDAP 서버) 오버레이 멤버 활성화

1.1. 파일을 작성하십시오.

vim ~ / memberof_add.ldif

아래 내용으로 :

dn : cn = module, cn = config
objectClass : olcModuleList
cn : 모듈
olcModulePath : / usr / lib / ldap
olcModuleLoad : memberof

1.2. 파일을 작성하십시오.

vim ~ / memberof_config.ldif

아래 내용으로 :

dn : olcOverlay = memberof, olcDatabase = {1} hdb, cn = config
objectClass : olcMemberOf
objectClass : olcOverlayConfig
objectClass : olcConfig
objectClass : top
olcOverlay : 멤버
olcMemberOfDangling : 무시
olcMemberOfRefInt : 참
olcMemberOfGroupOC : groupOfNames
olcMemberOfMemberAD : 멤버
olcMemberOfMemberOfAD : memberOf

1.3. 로드하십시오. OpenLDAP 구성에 따라 달라 지므로 몇 가지 가능성을 제안합니다.

sudo ldapadd -c -Y 외부 -H ldapi : /// -f memberof_add.ldif
sudo ldapadd -c -Y 외부 -H ldapi : /// -f memberof_config.ldif

또는 :

ldapadd -D cn = admin, cn = config -w "암호"-H ldapi : /// -f memberof_add.ldif
ldapadd -D cn = admin, cn = config -w "암호"-H ldapi : /// -f memberof_config.ldif

동적 런타임 구성 엔진 (slapd-config)을 사용하는 경우 다시 시작할 필요가 없습니다.

1.4. (선택 사항) 다음을 테스트하십시오.

ldapsearch -D cn=admin,dc=example,dc=com -x -W -b 'dc=example,dc=com' -H 'ldap://127.0.0.1:389/' '(&(objectClass=posixAccount )(memberOf=cn=ldapeasyredmine,ou=그룹,dc=예제,dc=com))'

2. (OpenLDAP 서버) 그룹을 생성합니다. 이 예에서 사용자는 "ldap_user_1"이고 그룹은 "ldapeasyredmine"입니다.

dn: cn=ldapeasyredmine,ou=그룹,dc=예제,dc=com
cn: ldapeasyredmine
설명: 직원은 Easy Redmine 발권 시스템에 로그인할 수 있습니다.
회원 : cn = ldap_user_1, ou = people, dc = example, dc = com
객체 클래스 : groupOfNames
객체 클래스 : 상단

DIT 구조에 맞게 "dn"및 "cn"조정

3. (Easy Redmine) LDAP 인증 모드를 수정합니다. 제 경우에는 "ldap_user_1"이 "posixAccount" 객체 클래스입니다.

기본 DN : dc = example, dc = com
필터: (&(objectClass=posixAccount)(memberOf=cn=ldapeasyredmine,ou=groups,dc=example,dc=com))

 

문제해결

즉석 사용자 생성을 사용하려면 Easy Redmine이 유효한 사용자를 생성하는 데 필요한 모든 정보를 LDAP에서 가져올 수 있는지 확인하십시오.
예를 들어, 디렉토리에 유효한 이메일 주소가 없으면 즉시 사용자 작성이 작동하지 않습니다 (로그인 할 때 '잘못된 사용자 이름 / 암호'오류 메시지가 표시됨).
(최신 Easy Redmine 버전에서는 그렇지 않습니다. 사용자 생성 대화 상자는 LDAP 서버에서 찾을 수 있는 모든 것으로 채워지고 새 사용자에게 나머지를 채우도록 요청합니다.)

또한으로 표시된 맞춤 입력란이 없는지 확인하십시오. 필수 사용자 계정 이러한 사용자 정의 필드는 사용자 계정이 즉시 생성되지 못하게합니다.

로그인 시스템의 오류는 Easy Redmine 로그의 실제 정보와 함께 보고되지 않아 문제 해결이 어렵습니다. 그러나 다음을 사용하여 필요한 대부분의 정보를 찾을 수 있습니다. 와이어 샤크 Easy Redmine 호스트와 LDAP 서버 사이. 이는 두 호스트 간의 네트워크 트래픽을 읽을 수 있는 권한이 있는 경우에만 작동합니다.

'ldapsearch' 도구를 사용하여 설정이 올바른지 테스트할 수도 있습니다. Easy Redmine을 호스팅하는 Linux 시스템에 로그인하고(및 ldaputils 설치 가능) 다음을 실행합니다.

ldapsearch -x -b  "dc=example,dc=com" -H ldap://hostname/ -D "DOMAIN\USER" -w mypassword [searchterm]

성공하면 검색어와 일치하는 광고 콘텐츠 목록이 표시됩니다. 그런 다음 Easy Redmine의 LDAP 구성 필드를 채우는 방법을 알게 됩니다.

기능을 확인하는 대체 방법

  • 잘못 설정된 경우 찾으려는 사용자를 삭제할 수있는 LDAP 필터를 제거하십시오.
  • "로그인 속성"옆에는 책 아이콘이 있습니다. 이를 클릭하고 LDAP가 올바르게 설정되면 실제 LDAP 서버가 "일반 속성"을 자동으로 미리 채 웁니다. 사용자가 설정을 변경하려는 경우 텍스트 필드 대신 선택 상자가 나타납니다. 대부분의 경우 사용자는이 내용을 전혀 채울 필요가 없습니다. 이것이 작동하면 다른 모든 것이 효과가있을 것입니다.
  • 연결 문제의 경우 LDAP 서버 목록에서 "테스트"버튼을 사용할 수 있습니다. LDAP에 연결할 수 있는지 테스트하는 역할 만합니다. 일반적인 문제점은 LDAP 설정이 여전히 보호되는 경우에도 관리자가 LDAP 시스템 사용자를 채우지 않는다는 것입니다. 이 경우 연결이 작동하기 때문에 테스트가 정상적으로 실행되지만 LDAP가 "보지"않기 때문에 사용자를 추가 할 수 없습니다.
  • LDAP가 실제로 작동하는지 테스트하기 위해 "사용 가능한 사용자"번호를 사용할 수도 있습니다. 값이 0이면 LDAP가 데이터를 리턴하지 않고 잘못 설정되었을 수 있습니다. 숫자가 있으면 숫자를 클릭하여 확장하여 LDAP에 표시되는 내용을 확인하고 그에 따라 필터를 조정하십시오.

계정 값 형식

바인드 자격 증명의 사용자 이름은 UPN ()이 아닌 DN으로 지정해야 할 수 있습니다.user@domain.com) 또는 도메인 \ 사용자,이 의견에서 지적했듯이 출처 : 트렁크 / 벤더 / 플러그인 /ruby-net-ldap-0.0.4/lib/net/ldap.rb:

  # # 바인드에 설명 된 것처럼 대부분의 LDAP 서버에서는 암호와 같은 인증 자와 함께 완전한 DN #을 바인딩 자격 증명으로 제공해야합니다.

따라서 MyDomain \ MyUserName 또는 MyUserName@MyDomain.com 사용자 이름은 Easy Redmine 로그인 이름으로 MyUserName만 입력할 수 있습니다.

느린 LDAP 인증

LDAP 인증이 느리고 AD 클러스터가있는 경우 호스트 필드에 AD 물리적 서버 중 하나를 지정하십시오. 도움이 될 수 있습니다.

오픈DS

OpenDS 서버를 사용하는 경우 지정된 로그인 속성으로 사용자를 검색하는 초기 쿼리와 함께 전송된 요청 제어 "페이지 결과"에 문제가 있을 수 있습니다. 이 요청 제어 1.2.840.113556.1.4.319는 기본적으로 익명 사용자에게 허용되지 않으므로 Easy Redmine이 바인딩이 발생하기 전에도 디렉토리에서 사용자를 찾을 수 없습니다.

이와 같은 글로벌 ACI 추가

./dsconfig -h SERVER_IP -p 4444 -D cn = "Directory Manager"-w 암호 -n set-access-control-handler-prop --trustAll --add global-aci : \ (targetcontrol = \ "1.2.840.113556.1.4.319 .3.0 \ "\) \ \ (버전 \ 1.2.840.113556.1.4.319 \; \ acl \ \"Anonymous \ control \ access \ to \ XNUMX \ "\; \ allow \ \ (read \) \ userdn = \ "ldap : /// anyone \"\; \)

참고 : 한 줄에 명령을 입력하고 표시된대로 정확하게 이스케이프를 사용하십시오 ( "acl"뒤에 \는 공백으로 "\"로 표시됨).

일부 사용자는 로그인 할 수 없습니다

문제 : 다른 사용자가있는 동안 특정 사용자 OU는 로그인 할 수 없습니다 (유효하지 않은 사용자 또는 비밀번호). 사용자가 원격 사이트에 있지만 같은 사이트의 다른 OU에있는 사용자에게는이 오류가 발생하지 않습니다.

해결 방법 : 문제는 잘못된 설정이 아니라 AD (Active Directory) 문제 일 가능성이 높습니다. 연결할 수없는 사용자는 AD 사용자 속성 (AD 관리)에서 "로그온 대상"필드를 특정 PC로 설정했습니다. "모든 곳에서 로그온"으로 변경하면 작동합니다. 보다 구체적으로이 필드는 AD 사용자-> 속성-> 계정-> 모든 곳에서 로그온으로 설정해야합니다.

유효한 인증서없이 LDAPS를 사용할 때 로그인 문제

유효한 인증서 없이 LDAPS를 사용할 때 로그인 문제가 발생할 수 있습니다. Redmine 4에서는 LDAPS 인증서가 항상 검증됩니다. 유효하지 않은 인증서로 사용자는 로그인할 수 없습니다. 물론, 올바른 장기 솔루션은 유효한 인증서를 사용하는 것입니다. 그러나이를 달성 할 때까지 임시 해결책은 관리 >> LDAP 인증 >> 각 인증 모드 편집으로 이동하는 것입니다.

설정을 다음으로 변경 LDAPS (인증서 검사 없음).

Easy Redmine Server 솔루션을 사용하면 레일 콘솔에서 일괄 적으로 변경할 수 있습니다.
레일 r "AuthSource.update_all (verify_peer : false)"-e 생산

또는 SQL을 통해
UPDATE auth_sources set verify_peer = 0;

 

코너 상황

  • LDAP에서 사용자를 자동으로 가져 오거나 작성하는 경우 사용자 작성 양식에 입력 한 기본 사용자 유형 설정이 LDAP에 입력 된 기본 사용자 유형 설정보다 선호됩니다. 사용자를 만든 후에는 새 LDAP를 만들지 않는 한이 설정을 나중에 변경할 수 없습니다.

30일 무료 평가판으로 Easy Redmine을 사용해 보세요

지리적 위치에서 모든 기능, SSL 보호, 일일 백업