服務如何撰寫其SPN
服務可以使用兩個函式來撰寫其SPN:DsGetSpn是撰寫SPN的一般用途函式,DsServerRegisterSpn 是撰寫和註冊主機型服務之簡單SPN的特製化函式。
服務安裝程式通常會使用 DsGetSpn 函式來撰寫 SPN,然後使用 DsWriteAccountSpn 函式在服務的登入帳戶上註冊。 DsGetSpn 可以執行下列函式。
- 為主機型服務建立具有「<服務類別>/<主機>」格式的簡單SPN。
- 建立複雜的SPN,其中包含可複製服務所使用的「<服務名稱>」元件,或「<埠>」元件,以區別單一主機上服務的多個實例。
- 建立單一SPN,並將 「<host>」 元件設定為指定主機的名稱,或預設為本機計算機的名稱。
- 針對將在整個樹系中多個主機上執行的多個服務實例建立SPN陣列。 每個SPN都會指定服務實例的主機名稱。
- 針對將在相同主機上執行的多個服務實例建立SPN陣列。 每個SPN都會指定主機的名稱,以及服務實例的埠號碼。
DsGetSpn 傳回的名稱數位必須藉由呼叫 DsFreeSpnArray 函式來釋出。
請注意,DsGetSpn、DsWriteAccountSpn 和 DsServerRegisterSpn 函式不會確認 SPN 是唯一的。 因為如果客戶端呈現非唯一的SPN,則相互驗證會失敗,請在註冊SPN之前先確認唯一性。 若要這樣做,請在全域編錄 (GC) 中搜尋 符合 SPN 的 servicePrincipalName 屬性。 如需搜尋 GC 的詳細資訊,請參閱 搜尋全域編錄。