
cn=conf를 통해 OpenLDAP에 구성표를 추가했습니다. 이 체계는 WSO2 Identity Server에서 가져왔지만 cn=conf 및 OpenLDAP에 적용하도록 수정되었습니다.
구성표가 오류 없이 로드되었지만 작동하지 않습니다. 로드된 모든 구성표에 대해 cn=schemes,cn=conf를 쿼리한 후 내 구성표에 구성표의 이름과 내용을 정의하는 olcObjectClasses 문이 없다는 것을 발견했습니다. 이것은 내가 로드한(오류 없이) LDIF 파일의 일부였지만 어떤 이유로 실시간 구성에는 존재하지 않습니다.
이제 사실을 추가하려고 하는데 오류가 발생합니다.
ldapmodify: invalid format (line 5) entry: "cn={4}wso2Person,cn=schema,cn=config"
내가 로드하려는 파일은 다음과 같습니다.
dn: cn={4}wso2Person,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
NAME 'wso2Person'
DESC 'wso2Person'
SUP inetOrgPerson
STRUCTURAL
MAY ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $ url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $ prefferedLanguage)
)
쿼리할 때: ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config
내 구성표에 대한 섹션은 다음과 같습니다.
# {4}wso2Person, schema, config
dn: cn={4}wso2Person,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {4}wso2Person
olcAttributeTypes: {0}( 1.3.6.1.4.1.37505.1.2 NAME 'gender' EQUALI
TY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.
1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {1}( 1.3.6.1.4.1.37505.1.3 NAME 'country'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {2}( 1.3.6.1.4.1.37505.1.4 NAME 'nickName' EQUA
LITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {3}( 1.3.6.1.4.1.37505.1.5 NAME 'timeZone'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {4}( 1.3.6.1.4.1.37505.1.6 NAME 'dateOfBirth'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {5}( 1.3.6.1.4.1.37505.1.7 NAME 'role' EQUALITY
caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.
4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {6}( 1.3.6.1.4.1.37505.1.8 NAME 'im' EQUALITY
caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {7}( 1.3.6.1.4.1.37505.1.9 NAME 'url' EQUALITY
caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {8}( 1.3.6.1.4.1.37505.1.10 NAME 'otherPhone'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {9}( 1.3.6.1.4.1.37505.1.11 NAME
'privatePersonalIdentifier' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {10}( 1.3.6.1.4.1.37505.1.12 NAME
'profileconfiguration' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {11}( 1.3.6.1.4.1.37505.1.13 NAME
'prefferedLanguage' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
내가 도대체 뭘 잘못하고있는 겁니까?
답변1
나는 그것을 해결했다.
olcObjectClasses: 이후의 모든 내용은 한 줄로 읽어야 하지만 그렇지 않았습니다. 이는 ldif 파일에서 행 간격을 지정하는 방식 때문이었습니다. 아래는 작업 파일입니다. (줄 앞에 공백을 추가하면 이전 줄의 연속임을 나타냅니다.)
dn: cn={4}wso2Person,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
NAME 'wso2Person'
DESC 'wso2Person'
SUP inetOrgPerson
STRUCTURAL
MAY ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $
url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $
prefferedLanguage))
나머지 구성표를 추가할 때 읽히지 않은 이유는 부적절한 위치에 추가 줄 바꿈이 있었기 때문입니다. olcObjectClasses 추가와 나머지 LDIF 콘텐츠 사이에 빈 줄이 있었습니다. 아래에서 확인하세요.
[..]
olcAttributeTypes: {11}( 1.3.6.1.4.1.37505.1.13 NAME
'prefferedLanguage' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
[...]