현재 LDAP 인증을 시스템에 통합하려고 노력하고 있으며 LDAP 그룹을 기반으로 액세스를 제한하고 싶습니다. 이 작업을 수행하는 유일한 방법은 검색 필터를 사용하는 것이므로 검색 필터에서 “memberOf”속성을 사용하는 것이 유일한 옵션이라고 생각합니다. “memberOf”속성은 서버의 “groupOfNames”항목에 대해 새 “member”속성이 작성 될 때마다 서버에서 작성할 수있는 운영 속성이라는 것을 이해하고 있습니다. 내 주요 목표는 기존 “groupOfNames”항목에 “member”속성을 추가하고 제공하는 DN에 일치하는 “memberOf”속성을 추가하는 것입니다.
내가 지금까지 달성 한 것 :
필자는 여전히 LDAP 관리에 익숙하지 않지만 openldap 관리자 안내서에서 찾은 내용을 바탕으로 리버스 그룹 멤버쉽 유지 관리 ( “오버레이 멤버 “)가 내가 원하는 효과를 정확하게 달성 하는 것처럼 보입니다 .
내 서버는 현재 “cn = config”스타일 런타임 구성을 사용하는 openldap 2.4.15의 패키지 설치 (ubuntu에서 분리)를 실행하고 있습니다. 내가 찾은 대부분의 예는 여전히 정적 구성의 이전 “slapd.conf”방법을 참조하며 구성을 새 디렉토리 기반 모델에 적용하기 위해 최선을 다했습니다.
오버레이 멤버를 활성화하기 위해 다음 항목을 추가했습니다.
olcModuleLoad로 모듈 활성화
cn=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z
데이터베이스에 대한 오버레이를 활성화하고 기본 설정 (groupOfNames, member, memberOf 등)을 사용하도록 허용
cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof
dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: 20091009104412Z
olcMemberOfRefInt: TRUE
entryCSN: 20091009173500.139380Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009173500Z
내 현재 결과 :
위의 구성을 사용하면 원하는 수의 “member”항목으로 새로운 “groupOfNames”를 추가 할 수 있으며 관련된 모든 DN이 “memberOf”속성으로 업데이트됩니다. 이것은 내가 기대하는 행동의 일부입니다. 오버레이 멤버로 다음을 수행해야한다고 생각하지만 여전히 다음을 수행하는 방법을 모르며 조언을 기꺼이 환영합니다.
- 기존 “groupOfNames”에 “member”속성을 추가하고 해당 “memberOf”속성을 자동으로 작성하십시오.
- “member”속성을 제거하고 해당 “memberOf”속성 “을 자동으로 제거하십시오.
답변
나는 똑같은 문제로 고생 해 왔으며, openldap 문서는 미니멀하고 거의 도움이되지 않습니다. 그들이 구성 데이터베이스에 갔을 때 (원칙적으로 나쁜 생각은 아님) 사람들이 /etc/ldap/slapd.conf에서 예제를 제공 할 때 현대적인 slapd 구성 (예 : 우분투)에서는 쓸모가 없습니다.
나는 마침내 이것을 작동시켰다. 다음은 요약 … 첫 번째 LDIF 파일입니다.
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof
두 번째 LDIF 파일 :
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
ldapadd를 사용하여 구성 데이터베이스에 추가하십시오 (일반 구성과 동일).
데이터베이스 의 기존 데이터 를 자동으로 업데이트 하지 않으므로 slapcat을 사용하여 모든 것을 임시 파일로 복사하고 각 그룹을 방문하고 그룹을 삭제하고 동일한 그룹을 다시 추가해야합니다 (memberOf 속성을 강제로 업데이트해야 함) 바르게). 빈 데이터베이스로 시작하는 경우 개체가 추가 될 때 속성이 올바르게 업데이트됩니다.
또한 “olcDatabase = {1} hdb” 는 매우 일반적이지만 설정과 일치하지 않을 수도 있습니다. 반드시 확인하십시오.
답변
나는 최근에 내 블로그 www.jordaneunson.com에 글을 썼고 관련 부분을 복사하여 붙여 넣었습니다.
LDAP 서버에서 “slapd”서비스를 중지하고 slapd.conf 파일을 편집하고 다음 두 줄을 추가해야했습니다.
moduleload memberof.la
overlay memberof
vpn이라는 groupOfNames가 이미 있으므로 다음 내용으로 LDIF 파일을 만들어야했습니다.
dn: cn=vpn,ou=Groups,dc=shop,dc=lan
objectclass: groupofnames
cn: vpn
description: Users allowed to connect on VPN
member: uid=jordan,ou=People,dc=shop,dc=lan
그리고 이것을 내 LDAP 데이터베이스에 추가했습니다.
slapadd -f file.ldif
이 후 디버그에서 LDAP 서버를 시작하여 오류를 확인했습니다.
slapd -d 99 -f /etc/ldap/slapd.conf
“vpn”의 내 그룹 멤버쉽이 내 사용자 항목에 나열되어 있는지 확인했습니다.
ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf
그리고 bam! 성공!
jordan, People, shop.lan
dn: uid=jordan,ou=People,dc=shop,dc=lan
memberOf: cn=vpn,ou=Groups,dc=shop,dc=lan
그래서 나는 때린 서비스를 다시 시작했고 그 이후로 많은 성공을 거두었습니다. 새로운 GUI 관리 도구의 경우 phpLDAPAdmin을 사용하고 있으며 memberOf 속성이 사용자에게 할당 및 할당 해제되는 데 아무런 문제가 없습니다.
마지막으로 “memberOf”속성은 기본 LDAP v3 스키마의 일부가 아니므로 ldapsearch를 수행하면 특별히 쿼리하지 않으면이 속성이 표시되지 않습니다. 그렇기 때문에 위 예제에서 ldapsearch 매개 변수의 끝에 선언되었습니다.
도움이 되었기를 바랍니다.
편집 : 방금 Apache Directory Studio에서 문제를 테스트했습니다. 위에서 언급 한 것처럼 속성 멤버 값을 전체적으로 입력하면 A-OK가 작동합니다. 그러나 memberOf 속성은 사용자 항목에 표시되지 않습니다. memberOf 속성이 LDAPv3 스키마의 일부가 아니기 때문입니다. 명령 행 도구 ldapsearch를 사용하는지 확인하십시오.
ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf