关于Windows上的Kerberos,我有几个问题。
我想知道使用ktpass将用户映射到服务的目的是什么。
例如,我在windows上运行ktpass,如下所示:
ktpass -out <keytab location> -princ <host/domain.com> -mapUser userA@domain.com -mapOp add .........当我们将用户映射到-princ时,是否意味着只有"userA“才能对服务进行身份验证?我们如何使用-add和-set选项?有什么关系?
我的问题是:
我有:
但是:
因此,我正在考虑使用SPN代替,并映射到userA,而userA只能使用该服务。但我不确定这种映射是否也有授权的目的。
对于sun的Krb5LoginModule,有一个选项useTicketCache。
如果我将此设置为true,是否意味着如果某些用户登录,Krb5loginmodule将使用存储在其计算机内存中的kerberoes凭据?
我这么问是因为在Krb5loginmodule的其他实现中,
例:IBM没有useTicketCache,但是有useCcache,但是useCcache需要指定票证位置;我不想指定这个位置。
如何在IBm的krb5loginmodule版本中做到这一点?
我可以这么做吗?
通常,keytab文件用于服务主体,但我可以使用这个keytab来存储用户凭据。
ktab -k mykeytab.keytab -a userA@REALM.COM ?不做setspn或ktpass吗?
发布于 2014-03-05 04:41:29
在AD中,Kerberos服务主体与AD用户或计算机对象关联为servicePrincipalName LDAP属性,因此您必须指定要向其中添加主体的帐户。这并不能确定哪些用户可以对服务进行身份验证(正如您所猜测的那样),而是在哪个AD帐户下运行服务本身(如果它在Windows上运行)。这是因为服务需要该主体的密钥,以便验证用户将发送的Kerberos票证,并且如果它在附加主体的帐户下运行,它将有权访问密钥。这在Windows上自动发生;在Unix上,通常由管理员手动安排,创建包含密钥的keytab文件,并配置服务来使用它。
对于sun的Krb5LoginModule,有一个选项useTicketCache。如果我将此设置为true,是否意味着如果某些用户登录,Krb5loginmodule将使用存储在其计算机内存中的kerberoes凭据?
这就是想法,尽管它的工作效率很低,因为Java选择在JDK中嵌入一个完整的Kerberos实现,而不是使用主机提供的实现(后者有一个选项,但只在Unix上,大多数人不知道或使用它)。在Unix上,包可以读取MIT风格的ccache,但不能写入它。在Windows上,它可以读取SSPI (用户的登录凭据),但是您需要设置一个注册表项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\allowtgtsessionkey = DWORD 1
..。这样Java就可以获得TGT的会话密钥以便使用它。这在默认情况下受到限制,通常不需要,因为Windows程序通常会要求SSPI执行需要会话密钥的操作,而不是自己执行这些操作。
通常,keytab文件用于服务主体,但我可以使用这个keytab来存储用户凭据。
keytab存储一组(主体,键)对;不管主体是用户还是服务。您可以将与密码相对应的密钥存储在密钥选项卡中(例如,使用MIT "ktutil“程序),然后使用密钥选项卡进行身份验证,而不是键入密码(例如,使用"kinit -k -t")。但是,请记住,这与在文件中输入密码基本上是一样的,这涉及到安全性。
https://serverfault.com/questions/573881
复制相似问题