首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中针对服务器验证Kerberos票证?

如何在Java中针对服务器验证Kerberos票证?
EN

Stack Overflow用户
提问于 2010-02-10 01:14:55
回答 2查看 11.3K关注 0票数 17

我们使用JAAS在使用Windows Kerberos票证缓存的Java应用程序中启用单点登录。我们的jaas.conf配置文件如下所示:

代码语言:javascript
复制
LoginJaas {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=true
  doNotPrompt=true
  debug=true;
};

这样,我们就可以创建一个Jaas LoginContext并成功地获得用户的Kerberos票证。我们使用JMI将此票证发送到out服务器应用程序。但是,我们无法做到的是在服务器上验证Kerberos票证实际上是由我们的Active Directory创建的。

目前,我们通过简单地检查服务器主体(KerberosTicket.getServer())名称在领域部分中是否包含我们的域名来对票证进行非常不安全的验证。当然,任何人都可以使用相同的域名设置自己的Kerberos服务器,并使用该票证启动应用程序。

我发现的一个想法是使用Kerberos票证针对Active Directory LDAP进行身份验证。不幸的是,我们使用Windows7并重用Kerberos票证来验证LDAP,只有在设置注册表项时才有效(参见http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html,搜索allowtgtsessionkey)。这对我们的用户来说是不可接受的。

有没有办法根据我们的Active Directory服务器验证票证?我怀疑有一种方法可以检查KerberosTicket.getServer()票证是否等于我们服务器的票证,但我不知道如何做到这一点。更新: KerberosTicket().getServer()只返回一个只包含服务器票证名称和域的KerberosPrincipal,因此不适合进行验证。

谢谢你的帮助,memminger

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2230981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档