我们计划在我们的网络应用程序上使用http://spnego.sourceforge.net/实施SSO。我已经尝试了http://spnego.sourceforge.net/中的示例项目并且运行良好(helloKDC.java和hello_spnego.jsp)。
我的问题是,在使用SPNEGO成功验证用户后,该用户如何自动登录我们的Web应用程序?我知道,request.getRemoteUser()返回客户端的Windows用户名,但客户端的Windows密码怎么样?如果我的理解是正确的,SPNEGO使用令牌而不是密码?
注意:这个问题与Java SSO using SPNEGO有些相似,但不幸的是,没有接受答案。
答案 0 :(得分:1)
您的理解是正确的,SPNEGO使用令牌而不是密码。关于您的第一个问题,关于用户如何自动登录到Web应用程序,您必须创建一个Kerberos密钥表,然后将其复制到您的应用程序服务器(并将其配置为查看密钥表),以便将SPNEGO令牌解密为“告诉“用户是谁。一旦密钥表就位后,将自动使用Kerberos SSO登录到您的Web服务器。否则,令牌只会看起来像应用程序的乱码,SSO身份验证将失败。请注意,您将永远无法看到密码 - 没有request.getPassword()
。在SPNEGO / Kerberos中,密码永远不会泄露给任何人,也不会暴露给应用程序服务器,甚至不会暴露给Kerberos KDC本身,因此在使用SPNEGO / Kerberos时无法以任何方式获取密码。这是Kerberos的美女之一。有关其他参考,请参阅我的技术文章中有关如何在此处创建Kerberos密钥记录的更多信息:Kerberos Keytabs – Explained。