Sun Java System Directory Server Enterprise Edition 6.0 管理指南

配置 DSML

除了以「簡易目錄存取協定 (LDAP)」處理請求以外,目錄伺服器也會回應以目錄服務標記語言版本 2 (DSMLv2) 傳送的請求。DSML 是另一個可供用戶端編碼目錄作業的方法。伺服器處理 DSML 就像處理任何其他請求一般,所使用之存取控制與安全性功能均相同。DSML 處理允許其他多種用戶端類型存取您的目錄內容。

目錄伺服器支援透過超文字傳輸協定 (HTTP/1.1) 使用 DSMLv2,而在傳輸 DSML 內容時,會使用簡易物件存取協定 (SOAP) 1.1 版做為程式設計協定。如需有關這些協定的更多資訊,以及 DSML 請求的範例,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的第 10 章「Directory Server DSMLv2」

本節包含下列主題:

Procedure啟用 DSML-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
    

    此連接埠預設會設為 80

  4. 重新啟動伺服器。


    $ dsadm restart instance-path
    
接下來的步驟

根據您所定義的參數與屬性值,DSML 用戶端可使用下列 URL 傳送請求至此伺服器:

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

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

Procedure停用 DSML-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
    

Procedure配置 DSML 安全性

您可以配置接受 DSML 請求時所需的安全性層級。若要執行此作業,您必須配置 DSML 用戶端認證。

    設定 DSML 用戶端認證模式。


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

    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 授權」標頭,但此標頭無法對映至使用者項目,DSML 請求即會遭拒絕,並產生錯誤訊息 403:「禁止」。

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})

此配置表示伺服器應使用 HTTP 使用者 ID,做為目錄伺服器尾碼中所儲存之 DN 的 uid 值。例如,若 HTTP 使用者為 bjensen,伺服器就會嘗試使用 DN uid=bjensen,ou=people 執行連結。

為使對映正常運作,您必須完成 dsSearchBaseDN 的值。例如,您可以將 dsSearchBaseDN 的值變更為 ou=people,dc=example,dc=com。接著,若 HTTP 使用者為 bjensen,伺服器就會嘗試使用 DN uid=bjensen,ou=people,dc=example,dc=com 執行連結。

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 寄件者」標頭中可能包含的電子郵件位址取代。

${host}

此字串會由 DSML 請求之 URL 的主機名稱與連接埠號取代,此亦即伺服器的主機名稱與連接埠號。

若要讓 DSML 請求執行不同類型的身份識別對映,請為 HTTP 標頭定義新的身份識別對映。

Procedure為 HTTP 標頭定義新的身份識別對映

  1. 為此協定編輯預設 DSML-over-HTTP 身份識別對映,或建立自訂對映。

    對映項目必須位於 cn=HTTP-BASIC,cn=identity mapping,cn=config 項目下。

    在指令行上使用 ldapmodify 指令增加此項目,如使用 ldapmodify 增加項目中所述。

  2. 重新啟動目錄伺服器,使您的新對映生效。

    自訂對映會先進行評估。若沒有成功的自訂對映,則會接著評估預設對映。若所有對映皆無法判斷 DSML 請求的連結 DN,即會禁止並拒絕 DSML 請求 (錯誤 403)。