更正基于主机的服务的Kerberos主体类型

时间:2012-03-29 20:34:10

标签: java kerberos principal gssapi jgss

several types个Kerberos主体。像michael-o@COMPANY.COM这样的常规用户原则是KRB_NT_PRINCIPAL。但是像HTTP/host.company.com@COMPANY.COM这样的服务呢?有一些可能的类型,如KRB_NT_SRV_{INST|HST|XHST}。什么是正确的?

据我所知INST仅适用于TGT。 我认为正确的答案应该是HST。我无法在Oracle的JDK源代码中找到线索,但这两个矛盾点:12

2 个答案:

答案 0 :(得分:2)

RFC 4120第7.5.8节定义了名称类型。在实践中,大多数都使用KRB_NT_SRV_HST。除了RFC和测试代码之外,我从未见过KRB_NT_SRV_XHST。通常,当第二个组件不是主机名时,使用KRB_NT_SRV_INST。示例包括TGT或其他复制服务,其中与您获得的主机无关。但是,名称类型并不重要。第6.2节描述了这一点:

  

与领域名称的情况一样,需要遵守惯例     所有人都同意主要名称隐含的信息。     作为主体名称一部分的名称类型字段表示     名称隐含的信息种类。名字类型应该是     仅仅作为解释名称含义的提示。它是     检查等效性时不重要。主要名称     只有名称类型不同,才能识别相同的主体。名字     type不对名称空间进行分区。忽略名称类型,没有     两个名称可以是相同的(即,至少一个组件,或     领域,必须是不同的)。定义了以下名称类型:   现代Kerberos实现特别对待KRB_NT_SRV_HST。特别是,它们更有可能根据此类主体的第二个组件中的主机名生成跨领域引用。因此,如果第一个组件标识服务而第二个组件标识主机名,则SRV_HST最好。

答案 1 :(得分:0)

RFC 1510是一个更好的参考。见http://www.rfc-editor.org/rfc/rfc1510.txt 第7.2.1节 “主机上服务器的主要标识符通常是    由两部分组成:(1)服务器所在的KDC领域    如果是,则注册,以及(2)NT-SRV-HST类型的双组件名称    主机名是Internet域名或多组件名称    如果主机的名称是X.500等格式,请键入NT-SRV-XHST    允许斜杠(/)分隔符。两个或第一个组成部分    多组件名称将标识服务和后者    组件将识别主机。主机名称不在哪里    区分大小写(例如,使用Internet域名)的名称    主机必须是小写的。对于telnet和.net等服务    Berkeley R命令以系统权限运行,第一个    component将是字符串“host”而不是特定于服务的    标识符。 “