使用 SPNEGO Web SSO 自动登录

Auto-login using SPNEGO Web SSO

我们计划使用 http://spnego.sourceforge.net/ on our web application. I've tried the sample projects in http://spnego.sourceforge.net/ 实施 SSO,并且效果很好(helloKDC.java 和 hello_spnego.jsp)。

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

注意:此问题与 Java SSO using SPNEGO 有点相似,但不幸的是,没有可接受的答案。

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