我们计划在我们的web应用程序上使用http://spnego.sourceforge.net/实现单点登录。我已经尝试了http://spnego.sourceforge.net/中的示例项目,它工作得很好(helloKDC.java和hello_spnego.jsp)。
我的问题是,在使用SPNEGO成功验证用户身份后,该用户如何自动登录到我们的web应用程序?我知道,request.getRemoteUser()返回客户端的windows用户名,但是客户端的windows密码呢?如果我的理解正确的话,SPNEGO使用令牌而不是密码?
注意:这个问题有点类似于Java SSO using SPNEGO,但不幸的是,在这个问题上没有公认的答案。
发布于 2017-04-08 21:02:44
您的理解是正确的,SPNEGO使用令牌而不是密码。关于您的第一个问题,关于用户如何自动登录到web应用程序,您必须创建一个Kerberos密钥表,然后将其复制到您的应用程序服务器(并将其配置为查看密钥表),以便解密SPNEGO令牌以“告诉”用户是谁。一旦设置了密钥表,就会自动使用Kerberos SSO登录到您的web服务器。否则,令牌在您的应用程序中看起来就像是加扰的比特,SSO身份验证将失败。请注意,您永远看不到密码-没有request.getPassword()。在SPNEGO/Kerberos中,密码永远不会暴露给任何人,不会暴露给应用服务器,甚至不会暴露给Kerberos KDC本身,因此在使用SPNEGO/Kerberos时不可能以任何方式获取密码。这是Kerberos的优点之一。要获得更多参考,您可以阅读我的技术文章中关于如何创建Kerberos keytab的更多内容:Kerberos Keytabs – Explained。
https://stackoverflow.com/questions/42685630
复制相似问题