我对使用 keytab 进行身份验证有一些疑问希望这里的好心人能启发我
假设我有用户 A,他将使用在端口 1010 上运行的服务。首先,用户 A 将登录到 Active Directory 以验证自己。
登录后,userA 将尝试连接到服务器以使用其服务 1010。为了让服务器验证 UserA 是他是谁,我需要使用setspn
在 Active Directory 中注册 SPN。例如
setspn -s service1010/mydomain.com serviceaccount1
然后需要在 Active 目录生成 ktab 文件,例如
ktab -a serviceprincal1010/server.domain.com@DOMAIN.COM -k mykeytab.keytab
然后带到mykeytab.keytab
服务器上。
在服务器上,我会使用带有登录配置的 JAAS 来查询 KDC,例如
ServicePrincipalLoginContext
{
com.sun.security.auth.module.Krb5LoginModule required
principal=serviceprincal1010/server.domain.com@DOMAIN.COM
doNotPrompt=true useKeyTab=true keyTab=mykeytab.keytab storeKey=true;
};
从这一点开始,我很困惑。userA 如何得到验证(即 userA 实际上是他是谁?)。