我正在做一个需要使用 Active Directory 进行单点登录的 Java EE Web 应用程序。
该应用程序将不再提示输入用户名和密码。身份验证过程需要检索当前 Windows 登录用户。拥有用户后,我需要查询 Active Directory 以获取该登录用户的角色。我知道这将排除非 Windows 用户,但这是一个内部应用程序,所有客户端都使用 Windows。
我必须在 2 个 Java EE Web 应用程序中实现 SSO。1 个应用程序在 GlassFish v2.1.1 (JDK 1.6) 上运行,另一个在 Tomcat (JDK 1.5) 上运行。
基本上我的主要问题是如何检索当前 Windows 登录用户。
我已经遇到过JAAS和Kerberos。如果我错了,请纠正我。我的理解是这些是身份验证协议,它们没有检索当前登录用户的窗口的功能。
我已经尝试过以下方法,但我总是得到null或服务器自己的用户名。
System.getProperty("user.name");new com.sun.security.auth.module.NTSystem().getName();request.getUserPrincipal().getName();System.getenv("USERNAME");- Tomcat 中的 JCIF NTLM HTTP 身份验证
- 登录上下文
我愿意接受任何建议。