2017-03-09 156 views
0

我们计划在我们的Web应用程序上使用http://spnego.sourceforge.net/实施SSO。我已经尝试了http://spnego.sourceforge.net/中的示例项目,并且它运行良好(helloKDC.java和hello_spnego.jsp)。使用SPNEGO Web自动登录SSO

我的问题是,使用SPNEGO成功验证用户后,该用户如何自动登录到我们的Web应用程序?我知道,那request.getRemoteUser()返回客户端的Windows用户名,但客户端的Windows密码怎么样?如果我的理解是正确的,SPNEGO使用令牌而不是密码?

注:这个问题有点类似于Java SSO using SPNEGO,但不幸的是,没有接受的答案。

+0

为什么你需要密码? SPNEGO认证就足够了。 –

回答

0

您的理解是正确的,SPNEGO使用令牌而不是密码。至于第一个问题,关于用户如何自动登录到Web应用程序,您必须创建一个Kerberos密钥表,然后将其复制到您的应用程序服务器(并将其配置为查看密钥表),以便将SPNEGO令牌解密为“告诉“用户是谁。一旦配置了密钥表,就会自动使用Kerberos SSO登录到您的Web服务器。否则,令牌只会看起来像应用程序的加扰位,而SSO验证会失败。请注意,您将永远无法看到密码 - 没有request.getPassword()。在SPNEGO/Kerberos中,密码永远不会暴露给任何人,也不会暴露给任何人,而不是暴露给应用服务器,甚至不暴露给Kerberos KDC本身,因此使用SPNEGO/Kerberos时无法以任何方式获取密码。这是Kerberos的美丽之一。有关其他参考资料,您可以阅读我的技术文章,了解如何在此创建Kerberos密钥表:Kerberos Keytabs – Explained

+1

谢谢。我意识到我不再需要密码,因为如果request.getRemoteUser()是!= null这意味着Spnego身份验证成功,我只需要自动登录用户。 – stuckoverflow24