在没有用户密码的情况下生成 AD Kerberos 票证

Posted

技术标签:

【中文标题】在没有用户密码的情况下生成 AD Kerberos 票证【英文标题】:Generating AD Kerberos tickets without user password 【发布时间】:2012-12-10 17:35:39 【问题描述】:

我正在开发一个需要代表用户生成 Kerberos 票证的 Java EE 服务器应用程序。

我正在开发的应用程序将使用备用凭据(非 Active Directory,例如生物识别)对用户进行身份验证,然后需要以某种方式生成 Kerberos 票证,以显示用户已通过身份验证。然后,我将使用 Kerberos 票证生成一个 SPNEGO 令牌,并将该令牌插入到 HTTP 标头中,这样用户就不必在来自浏览器的后续请求中重新进行身份验证。

是否可以在没有用户原始 AD 密码的情况下代表用户生成 Kerberos 票证? (假设我可以访问 AD 服务帐户登录名和密码)。如果可能,我将如何去做?需要什么样的配置、权限?

【问题讨论】:

【参考方案1】:

是的,这是可能的。 Microsoft 为此扩展了 Kerberos。这称为用户服务 (S4U)。您的案例称为S4U2Self(协议转换)。这将在 Java 8 中可用。您可以检查 ticket 并将该代码添加到 Java 认可的类路径中。你可以在MIT Kerberos wiki阅读更多内容。

【讨论】:

非常感谢。正是我想要的! 很高兴能为您提供帮助。如果你得到这个工作,请分享你的经验。你也可能不赞成我的回答。 请注意,您需要以某种方式从客户端获取 UPN。

以上是关于在没有用户密码的情况下生成 AD Kerberos 票证的主要内容,如果未能解决你的问题,请参考以下文章

kerberos 身份验证-功能组

使用域用户(AD 用户)连接到没有密码的 SQL Server

使用 kerberos 和 AD 的 Oracle 数据库身份验证

AD账户userAccountControl属性值为544

在没有密码c#4.5的情况下检查LDAP目录的用户名

没有第二个账号查询AD,如何检测AD用户密码是不是过期?