Sun Java System Directory Server Enterprise Edition 6.2 관리 설명서

DSML 구성

디렉토리 서버는 LDAP(Lightweight Directory Access Protocol) 요청을 처리하는 동시에 Directory Service Markup Language 버전 2(DSMLv2)로 받은 요청에도 응답합니다. DSML은 클라이언트에서 디렉토리 작업을 인코딩하는 또 다른 방법입니다. 서버는 다른 요청과 마찬가지로 모든 액세스 제어 및 보안 기능을 사용하여 DSML을 처리합니다. DSML 처리는 많은 유형의 클라이언트가 디렉토리 내용에 액세스할 수 있도록 도와줍니다.

디렉토리 서버는 HTTP(Hypertext Transfer Protocol/1.1)를 통해 DSMLv2를 지원하며 SOAP(Simple Object Access Protocol) 버전 1.1을 DSML 내용 전송을 위한 프로그래밍 프로토콜로 사용합니다. 이러한 프로토콜에 대한 자세한 내용과 DSML 요청에 대한 예는 Sun Java System Directory Server Enterprise Edition 6.2 Reference의 10 장, Directory Server DSMLv2를 참조하십시오.

이 절은 다음 내용으로 구성되어 있습니다.

ProcedureDSML-over-HTTP 서비스를 사용 가능하게 하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. DSML 모드를 on으로 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-enabled:on
  2. 보안 DSML 포트를 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-secure-port:port
    
  3. 비보안 DSML 포트를 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-port:port
    

    기본적으로 이 포트는 disabled로 설정됩니다.

  4. 서버를 다시 시작합니다.


    $ dsadm restart instance-path
    
다음 순서

정의한 매개 변수와 속성 값에 따라 DSML 클라이언트는 아래 URL을 사용하여 이 서버로 요청을 보낼 수 있습니다.

http://host:DSML-port/ relative-URL

https://host:secure-DSML-port /relative-URL


주 –

relative-URLdsml-relative-root-url 등록 정보를 사용하여 읽고 설정할 수 있습니다.


ProcedureDSML-over-HTTP 서비스를 사용 불가능하게 하는 방법

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

  1. DSML 모드를 off로 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-enabled:off
  2. 보안 DSML 포트를 disabled로 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-secure-port:disabled
  3. 서버를 다시 시작합니다.


    $ dsasm restart instance-path
    

ProcedureDSML 보안을 구성하는 방법

DSML 요청을 승인하는 데 필요한 보안 수준을 구성할 수 있습니다. 이 작업을 수행하려면 DSML 클라이언트 인증을 구성해야 합니다.

  1. DSML 클라이언트 인증 모드를 설정합니다.


    $ dsconf set-server-prop -h host -p port dsml-client-auth-mode:dsml-mode
    

    기본적으로 dsml-client-auth-mode 등록 정보는 client-cert-first로 설정됩니다.

    dsml-mode는 다음 중 하나입니다.

    • http-basic-only - 기본값입니다. 서버에서 HTTP 인증 헤더의 내용을 사용하여 디렉토리 항목에 매핑할 수 있는 사용자 이름을 찾습니다. 이 프로세스와 해당 구성은 SSL을 통해 암호화되지만 클라이언트 인증은 사용되지 않습니다. 자세한 내용은 DSML 아이디 매핑을 참조하십시오.

    • client-cert-only - 서버에서 클라이언트 인증서의 자격 증명을 사용하여 클라이언트를 확인합니다. 이렇게 설정하면 모든 DSML 클라이언트가 보안 HTTPS 포트를 통해 DSML 요청을 보내고 인증서를 제공해야 합니다. 서버는 클라이언트 인증서가 디렉토리 항목과 일치하는지 확인합니다. 자세한 내용은 5 장, 디렉토리 서버 보안을 참조하십시오.

    • client-cert-first - 서버에서 먼저 제공된 클라이언트 인증서를 사용하여 클라이언트 인증을 시도합니다. 클라이언트 인증서가 제공되지 않은 경우 서버는 인증 헤더의 내용을 사용하여 클라이언트를 인증합니다.

    HTTP 요청에 인증서와 인증 헤더가 모두 없으면 서버는 익명 바인드를 사용하여 DSML 요청을 처리합니다. 익명 바인드는 다음과 같은 경우에도 사용됩니다.

    • client-cert-only 값을 지정할 때 클라이언트에서 인증 헤더만 제공하고 인증서는 제공하지 않는 경우

    • http-basic-only 값을 지정할 때 클라이언트에서 인증서만 제공하고 인증 헤더는 제공하지 않는 경우

    인증서가 제공되었지만 항목에 일치시킬 수 없는 경우나 HTTP 인증 헤더가 지정되었지만 사용자 항목으로 매핑할 수 없는 경우에는 클라이언트 인증 방법에 상관없이 오류 메시지 403: "금지됨"이 표시되며 DSML 요청이 거부됩니다.

DSML 아이디 매핑

인증서 없이 기본 인증을 수행하는 경우 디렉토리 서버는 아이디 매핑이라는 메커니즘을 사용하여 DSML 요청을 승인할 때 사용할 바인드 DN을 지정합니다. 이 기법은 HTTP 요청의 인증 헤더에서 필요한 정보를 추출하여 바인드에 사용할 아이디를 확인합니다.

DSML/HTTP에 대한 기본 아이디 매핑은 다음과 같은 서버 구성 항목을 통해 지정됩니다.

dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
cn: default
dsSearchBaseDN: ou=people
dsSearchFilter: (uid=${Authorization})

이 구성에서 서버는 디렉토리 서버 접미어에 저장된 DN에 대한 uid 값으로 HTTP 사용자 아이디를 사용해야 합니다. 예를 들어 HTTP 사용자가 bjensen인 경우 서버는 uid=bjensen,ou=people DN을 사용하여 바인딩을 실행하려고 합니다.

매핑이 제대로 작동하려면 dsSearchBaseDN 값을 완료해야 합니다. 예를 들어 dsSearchBaseDN 값을 ou=people,dc=example,dc=com으로 변경할 수 있습니다. HTTP 사용자가 bjensen인 경우 서버는 uid=bjensen,ou=people,dc=example,dc=com DN을 사용하여 바인딩을 실행하려고 합니다.

dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
cn: default
dsSearchBaseDN: ou=people,dc=example,dc=com
dsSearchFilter: (uid=${Authorization})

dsSearchFilter 매핑 항목 속성에 ${header} 형식의 자리 표시자를 사용할 수도 있습니다. 여기서 header는 HTTP 헤더의 이름입니다.

DSML 매핑에 사용되는 가장 일반적인 헤더는 다음과 같습니다.

${Authorization}

이 문자열은 HTTP 인증 헤더에 포함된 사용자 이름으로 바뀝니다. 인증 헤더에는 사용자 이름과 비밀번호가 모두 포함되어 있지만 이 자리 표시자는 사용자 이름으로만 바뀝니다.

${From}

이 문자열은 HTTP From 헤더에 포함된 전자 메일 주소로 바뀝니다.

${host}

이 문자열은 DSML 요청의 URL에 포함된 서버의 호스트 이름 및 포트 번호로 바뀝니다.

DSML 요청에 다른 종류의 아이디 매핑을 사용하려면 다음과 같이 HTTP 헤더에 대한 새 아이디 매핑을 정의합니다.

ProcedureHTTP 헤더에 대해 새 아이디 매핑을 정의하는 방법

  1. 기본 DSML-over-HTTP 아이디 매핑을 편집하거나 이 프로토콜에 대한 사용자 정의 매핑을 작성합니다.

    매핑 항목은 cn=HTTP-BASIC,cn=identity mapping,cn=config 항목 아래에 있어야 합니다.

    ldapmodify를 사용한 항목 추가에 설명된 것처럼 ldapmodify 명령을 사용하여 명령줄에서 이 항목을 추가합니다.

  2. 새 매핑을 적용하려면 디렉토리 서버를 다시 시작합니다.

    사용자 정의 매핑이 먼저 평가됩니다. 사용자 정의 매핑이 실패한 경우 기본 매핑이 평가됩니다. 모든 매핑을 평가한 후에도 DSML 요청에 대한 바인드 DN을 확인하지 못하면 이 DSML 요청은 금지되어 거부됩니다(오류 403).