Tomcat 在Java EE web应用程序中检索当前Windows用户以实现单点登录

Tomcat 在Java EE web应用程序中检索当前Windows用户以实现单点登录,tomcat,jakarta-ee,active-directory,single-sign-on,windows-users,Tomcat,Jakarta Ee,Active Directory,Single Sign On,Windows Users,我正在做一个JavaEEWeb应用程序,它需要使用Active Directory进行单点登录 应用程序将不再提示输入用户名和密码。身份验证过程需要检索当前登录的Windows用户。有了用户后,我需要查询Active Directory以获取该登录用户的角色。我知道这将排除非Windows用户,但这是一个内部应用程序,所有客户端都在使用Windows 我必须在2个JavaEEWeb应用程序中实现SSO。一个应用程序运行在GlassFish v2.1.1(JDK 1.6)上,另一个运行在Tomca

我正在做一个JavaEEWeb应用程序,它需要使用Active Directory进行单点登录

应用程序将不再提示输入用户名和密码。身份验证过程需要检索当前登录的Windows用户。有了用户后,我需要查询Active Directory以获取该登录用户的角色。我知道这将排除非Windows用户,但这是一个内部应用程序,所有客户端都在使用Windows

我必须在2个JavaEEWeb应用程序中实现SSO。一个应用程序运行在GlassFish v2.1.1(JDK 1.6)上,另一个运行在Tomcat(JDK 1.5)上

基本上,我的主要问题是如何检索当前Windows登录用户

我已经遇到过了。如果我错了,请纠正我。我的理解是,这些是身份验证协议,它们没有检索当前windows登录用户的功能

我已经尝试了以下方法,但我总是得到
null
或服务器自己的用户名

  • System.getProperty(“user.name”)
  • new com.sun.security.auth.module.NTSystem().getName()
  • request.getUserPrincipal().getName()
  • System.getenv(“用户名”)
  • Tomcat中的JCIF NTLM HTTP身份验证
  • 登录文本
  • 我愿意接受任何建议。

    是一个开源项目,它提供一个servlet过滤器,提供集成的Windows身份验证

    如果您的组织使用基于java的 web/应用程序服务器,以及您 首选Kerberos/SPNEGO而不是NTLM 作为身份验证协议,以及 您希望有一个Javaservlet 基于过滤器(JSR-53)的实现 而不是特定于容器的 认证模块(JSR-196),以及 您需要SSO(无用户名/密码) 提示),则此项目可能具有 你有兴趣吗

    它有配置和的说明。

    这可能会有帮助: http://appliedcrypto.com/

    JCIFS NTLM是(尽管它将与NTLMv1一起工作)。在我当前的项目中,我们使用了先前推荐的方法


    选项1、2和3将尝试获取服务器用户-您可能需要考虑一下此代码在哪里运行以及它如何与客户端计算机交互(提示-它不能)

    是一个很好的解决方案。它不需要Kerberos配置。

    您想要登录到客户端计算机还是服务器计算机上的用户?我想要登录到客户端计算机上的用户。谢谢