如果我的应用程序服务器对通过 SPNEGO 的访问进行身份验证,那么我的应用程序代码对用户了解多少?

If my application server authenticates access over SPNEGO, what does my app code know about the user?

我想要做的是使用应用程序服务器 (WAS) 针对 SPNEGO 单点登录服务的身份验证在网页级别对用户进行身份验证。

一旦用户在那里通过身份验证,我希望能够根据用户在 Active Directory 中所在的组来限制用户可以执行的操作。

我不知道的是,如果用户已通过 SSO 进行身份验证,那么应用程序代码本身可以了解有关用户的哪些信息以及他们属于哪些组?它是如何获得这些信息的?

来自@Gas 的评论

SPNEGO 与它无关。可以正常登录,效果是一样的。用户组是从用户注册表中读取的(很可能是 AD)。要限制操作,您可以在应用程序中创建安全角色,将角色映射到组,然后通过 isUserInRole('abc') 签入应用程序。这是非常简短的总结。查找 Java EE authentication/authorization 篇文章。

因此,应用程序无需知道用户名即可进行授权。您需要访问经过身份验证的用户的用户标识,可以使用 request.getRemoteUser() 方法。在此处查看详细信息 https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getRemoteUser()