如何使用Windows登录进行单点登录和桌面Java应用程序的Active Directory条目?

Tou*_*uko 30 java active-directory windows-authentication single-sign-on

我希望我的桌面Java应用程序能够与Active Directory用户进行单点登录.分两步,我想:

  1. 确保特定用户已使用某些用户条目登录到Windows.
  2. 从Active Directory中查看该用户的一些设置信息

使用Java:确定当前Windows用户的程序方法我可以获得当前Windows用户的名称,但我可以依赖它吗?我觉得

System.getProperty("user.name")
Run Code Online (Sandbox Code Playgroud)

会不够安全?("user.name"似乎来自环境变量,所以我不能依赖它,我想?)

问题在Linux上使用Java对Active Directory进行 身份验证为我提供了给定名称+ pass的身份验证,但我想根据Windows登录进行身份验证?

对于Active Directory访问,LDAP可能是选择?

我不完全确定我是否提出了正确的问题,但希望有人有一些想法可以转发我.

Ala*_*ent 13

它不受支持.Java 6有改进,但还不够.

Java有自己的GSS堆栈.问题是单点登录,您需要从操作系统(而不是Java堆栈)获取Kerberos票证.否则,用户必须第二次进行身份验证(无法实现单点登录的目的).

请查看http://java.sun.com/developer/technicalArticles/J2SE/security/.往下看的"访问本地GSS-API",它讲述一个新的系统属性sun.security.jgss.native,当设置为true会导致Java来使用底层OS GSS的实施,使访问操作系统级别的认证.完美!....除了它仅支持Solaris和Linux,而不支持Microsoft Windows.

但是,Java 6似乎有足够的支持充当从IE接收SPNEGO身份验证请求然后针对Active Directory对该用户进行身份验证的服务器.它只是桌面客户端支持仍然不完整.


Jam*_*hek 5

JAASLDAP LoginModule一起使用.这将允许您插入底层Java安全基础结构.

当您需要使应用程序脱机或"调试"应用程序时,您可以轻松地将LDAP模块换出虚拟模块.这允许您继续测试"安全性",而不依赖于Active Directory.高度可测试,解耦,您可以在以后几乎没有悲伤的身份验证方案.

  • 与参数useTicketCache一起使用时,Krb5LoginModule似乎能够使用操作系统票证缓存(Windows登录时获得的凭据),而不是使用LDAP LoginModule.似乎仍有一些问题,但现在这个问题起作用了...... (2认同)