2012-03-29 68 views
2

有Kerberos主體的several types。像[email protected]這樣的常規用戶princpal將是KRB_NT_PRINCIPAL。但是像HTTP/[email protected]這樣的服務呢?有幾種可能的類型,如KRB_NT_SRV_{INST|HST|XHST}。什麼是正確的?正確的Kerberos主體類型的基於主機的服務

根據我的理解,INST僅適用於TGT。 我會假設正確答案應該是HST。我無法在Oracle的JDK源代碼中找到線索,但這兩個相矛盾的點:12

回答

2
RFC 4120

7.5.8節定義了nametypes。在實踐中多數使用KRB_NT_SRV_HST。我從未見過KRB_NT_SRV_XHST除了在RFC和測試代碼。一般而言KRB_NT_SRV_INST當第二組件是不是一個主機名被使用。 。例子包括TGT的,或者在那裏你的主機沒關係其他複製的服務。然而,名稱類型不管那麼多了第6.2節描述了這一點:

如同領域名稱,約定的情況下需要確保 所有人都同意主體名稱隱含的信息 作爲t的一部分的名稱類型字段他的主要名稱表示名稱暗示的 種類的信息。名稱類型應該是 只能作爲解釋名稱含義的提示。檢查等價性時, 不顯着。主體名稱 僅在名稱類型中區分相同的主體。名稱 類型不分區名稱空間。忽略名稱類型,沒有 兩個名稱可以是相同的(即,至少有一個組件或 領域,必須不同)。定義了以下名稱類型: 現代Kerberos實現確實對待KRB_NT_SRV_HST有點特別。特別是,他們更可能根據主體的第二部分中的主機名生成跨領域引用。因此,如果第一個組件標識服務,第二個組件標識主機名,則SRV_HST最好。

+0

這似乎很好,謝謝! – 2013-11-21 11:57:45

0

RFC 1510是一個更好的參考。請參閱http://www.rfc-editor.org/rfc/rfc1510.txt 第7.2.1節 「主機上的服務器的主體標識符通常由 組成,其中包括兩部分:(1)服務器 註冊的KDC的領域;以及(2)如果主機名稱是互聯網域名或多組件名稱爲 如果主機名稱的格式爲X.500 ,則類型爲NT-SRV-HST的組件名稱類型NT-SRV-HST允許使用斜槓(/)分隔符。兩個或多個組件名稱中的第一個組件將標識服務,後面的組件將標識主機。其中主機名稱不是 區分大小寫(例如,with互聯網域名)的名稱3210主機必須小寫。對於諸如telnet和以系統權限運行的Berkeley R命令之類的服務,第一個 組件將是字符串「主機」而不是特定於服務的 標識符。 「

+0

所以它要麼是'KRB_NT_SRV_ {HST | XHST}',對吧? – 2012-07-31 08:21:27