我正在使用 SPNEGO 来实施 SSO 解决方案。在配置过程中,我需要分两步使用域用户凭据:
在
web.xml
我的应用程序中:<init-param> <param-name>spnego.preauth.username</param-name> <param-value>myuser</param-value> </init-param> <init-param> <param-name>spnego.preauth.password</param-name> <param-value>mypassword</param-value> </init-param>
在
setspn
命令中:setspn -A <mySPN> myuser
当我使用此配置时,Java 应用程序使用 getRemoteUser() 检索了用户“myuser”的用户名。所以 SSO 工作正常。但是当我尝试以其他用户(在同一 Windows 服务器上)的身份打开会话时,它也可以正常工作,所以我有点困惑。这让我想到了这些问题:
为什么 SSO 对域的所有其他用户都有效?我必须在 web.xml 和 setspn 命令中使用相同的用户吗?以及选择哪个用户?SPN 在 Kerberos 方案中的确切用途是什么?我必须在每台 Windows 计算机上执行命令 setspn 还是有办法只执行一次?