首页 文章

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

提问于
浏览
29

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

  • 确保特定用户已使用某些用户条目登录Windows .

  • 从Active Directory中查看该用户的一些设置信息

使用Java: Programatic Way to Determine Current Windows User我可以获得当前Windows用户的名称,但我能依靠它吗?我觉得

System.getProperty("user.name")

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

问题Authenticating against Active Directory with Java on Linux为我提供了给定名称传递的身份验证,但我想根据Windows登录进行身份验证?

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

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

8 回答

  • 2

    只是为了其他人阅读此主题的好处,http://www.javaactivedirectory.com/?page_id=196有一个关于如何使用Windows / Active Directory进行单点登录的示例

  • 0

    http://jcifs.samba.org/查看jCifs

    除此之外,坚持使用LDAP(实际上,它应该是我的第一次尝试,但......)

  • 13

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

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

  • 2

    Project Waffle具有在Windows上执行SSO的客户端和服务器端代码 . 它是基于JNA的,不需要本机库 .

  • 5

    article from Sun,这open source library可能能够满足您的需求 .

  • 4

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

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

    看看http://java.sun.com/developer/technicalArticles/J2SE/security/ . 向下看"Access Native GSS-API",它讨论了一个新的系统属性sun.security.jgss.native,当设置为true时,Java会使用底层的OS GSS实现,从而可以访问操作系统级别的身份验证 . 完美!....除了它仅支持Solaris和Linux,而不支持Microsoft Windows .

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

  • 0

    您是否考虑过使用JNA api(允许您轻松地对操作系统进行本机调用)?

    您可以在http://msdn.microsoft.com/en-us/library/ms724432(VS.85).aspx调用win32 metod GetCurrentUser MSDN文档 . 它位于Advapi32.dll内 .

    如果需要,它还有一个unicode版本,GetCurrentUserW .

    而你是对的 . 看起来环境变量似乎可以改变,因此可能会误导使用 .

    我不确定32 / 64bit窗口对跨平台的影响 . 如果你需要代码中的解决方案,我相信我可以为它编写一些东西 .

    但是,是的,只是一个想法:)

  • 0

    使用Spring Security可能会获得最大的灵活性 . 您可以将它与JAAS和LDAP身份验证一起使用 .

相关问题