问题标签 [spring-security-ldap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
599 浏览

java - 如何创建可以采用属性值模式的 LdapUserDetailsMapper?

我创建了一个自定义LdapUserDetailsMapper类来将扩展属性映射到一个自定义UserDetails类,该类包含诸如displayName,之类的额外属性telephoneNumberdepartment仅举几例。我设法通过访问属性来填充这些属性DirContextOperation,即

但是,我不希望对此进行硬编码,并且希望这些属性可配置,这很好,尽管我也想使用 LDAP 表达式来返回由该表达式产生的值,即

这当然行不通。我可以在任何连接之前手动解析模式并检索组件,但这听起来像是我想象框架已经提供的工作。

0 投票
1 回答
2570 浏览

java - 使用 spring security ldap 禁用基本身份验证

我正在尝试使用登录表单设置基本的 spring-security-ldap 身份验证,但是当我尝试登录时,我仍然得到一个 http-basic 弹出窗口,它不允许登录。

我的security.xml:

来自 web.xml:

这是重构工作的一部分,与重构前的部署版本相比,url(server):(port)/(webapproot)/j_security_check不可用,但重构后可用,并提示一个基本的登录框,这也是什么时候弹出的试图通过登录页面登录。

登录框

当尝试通过登录框登录时,我在服务器日志中得到了这个堆栈跟踪:

如何禁用基本登录,为了对 ldap-server 进行身份验证,我缺少什么?

更新:

我将 glassfish 安全领域更改为 ldap-realm,并将其设置为在旧 glassfish 服务器上。另外,我禁用了 glassfish 中的“安全管理器”。现在,我仍然得到额外的弹出登录框,但堆栈跟踪看起来更好:

但是我如何一起禁用 glassfish 的安全机制,而只依赖 spring 呢?

更新#2:找到罪魁祸首。我在 glassfish 安装中的 default-web.xml 中有这个:

删除它,不再有登录框:)然后转到下一个问题:p

0 投票
1 回答
4818 浏览

login - 弹簧安全;自定义过滤器和用户服务引用不一起工作

我正在尝试使用自定义过滤器实现 spring 安全授权。

安全.xml

CustomUserDetailsS​​ervice

}

我的身份验证入口点

MyAuthenticationSuccessHandler

MyAuthenticationFailureHandler

当我尝试登录时,它来到了 CustomUserDetailsS​​ervice 并成功地从数据库中检索了用户详细信息。

但无论凭据是否正确,它总是访问 authenticationFailureHandler 。( INFO : com.my.org.MyAuthenticationFailureHandler - point-3)

谁能帮我解决这个问题?谢谢

0 投票
1 回答
4122 浏览

grails - 如何将 LDAP 用户与 Grails 中 Spring Security 创建的 PERSON 表集成?

我们正在创建一个 grails 应用程序,我们希望用户使用他们的 Active Directory 凭据登录。此外,我们希望让此应用程序的业务所有者能够控制谁有权访问某些链接(操作)。因此,我们在 grails 应用程序中使用以下插件:

  1. Spring 安全核心
  2. Spring 安全 LDAP
  3. 弹簧安全用户界面

因为我们希望授权业务用户在必要时动态创建具有某些权限(操作)的自定义角色,所以我们认为最好的 Spring Security 配置是基于 Requestmap 数据库的方法

到目前为止,我们已经完成了以下工作:

  • 我们能够成功地针对 Active Directory 进行身份验证。
  • 我们还可以通过spring-security-ui插件的UI界面为不同的角色(ROLE_XXX)创建不同的Request Mappings

问题/疑问

spring-security-core 插件创建了以下表格:

  • 权威
  • PERSON_AUTHORITY
  • 请求图

这些是支持创建角色、将 URL 分配给角色的表。但是,作为约定名称的 Person_Authoritity 表意味着它是 PERSON 和 AUTHORITY (ROLE) 之间的多对多关系,因为一个人可能具有多个角色。我的问题是我没有 Person,因为该人已经存在于 Active Directory(外部源)中,并且它不是在应用程序中创建的。

有没有办法让经过身份验证的用户成为 PERSON ?Spring 安全解决方案需要 Person 行或对象,但您更喜欢引用它。

我也在这里发布了这个问题:

http://grails.1312388.n4.nabble.com/Issues-integrating-LDAP-Authentication-with-Requestmap-to-Secure-URLs-td4644040.html

谢谢,

0 投票
2 回答
7191 浏览

java - 如何通过 LDAP over TLS 对 Active Directory 进行身份验证?

我有一个有效的概念验证应用程序,它可以通过测试服务器上的 LDAP 成功地对 Active Directory 进行身份验证,但生产应用程序必须通过 TLS 进行验证——域控制器关闭任何不通过 TLS 启动的连接。

我已经在 Eclipse 中安装了 LDAP 浏览器,我确实可以在其中使用 TLS 绑定为我自己,但我无法终生弄清楚如何让我的应用程序使用 TLS。

ldap.xml

OverrideActiveDirectoryLdapAuthenticationProvider是一个覆盖类,它扩展了 Spring 类的副本,ActiveDirectoryLdapAuthenticationProvider由于某种原因,它被指定为final. 我重写的原因与自定义在用户对象上填充权限/权限的方式有关(我们将使用相关组的组成员身份来构建用户的权限,或者我们将从 AD 用户对象上的字段中读取)。在其中,我只是覆盖了该loadUserAuthorities()方法,但我怀疑我可能还需要覆盖该bindAsUser()方法或者可能是该doAuthentication()方法。

XML 和一个覆盖类是我的应用程序管理身份验证的唯一两个地方,而不是让 Spring 完成工作。我已经阅读了几个要启用 TLS 我需要扩展DefaultTlsDirContextAuthenticationStrategy类的地方,但是我在哪里连接它呢?有命名空间解决方案吗?我是否需要完全做其他事情(即放弃使用 SpringActiveDirectoryLdapAuthenticationProvider而使用LdapAuthenticationProvider)?

任何帮助表示赞赏。

0 投票
0 回答
697 浏览

java - 在 Spring Security 中通过 LDAP 对 Active Directory 进行身份验证时,如何实现自定义 UserDetails 对象?

与我之前的 问题一样,我继续涉足将 Spring Security 集成到现有应用程序中的浑水,该应用程序最终必须通过 LDAP(通过 TLS)针对 Active Directory 进行身份验证,并根据组成员身份或基于字符串存储在用户对象的自定义 AD 字段中。

我目前的问题是,虽然我已经成功管理了上述所有内容,但我还没有设法获得将自定义权限存储到会话中的 User 对象。这意味着无需额外工作,每个用户都将享受最近登录用户可用的权限。

我通过将用户权限存储在一个Hashtable<username, permissions>对象中解决了这个问题,我可以通过用 注释它的 getter/setter 来保护它@PreAuthorize("isAuthenticated() and principal.name == #username"),但这显然不是理想的。我更愿意将从 AD 收集的自定义信息作为自定义用户对象的一部分存储到会话中。但是怎么做?

security.xml我的和配置的相关部分ldap.xml分别如下:

我预见到的问题之一是,当调用该loadUserAuthorities()方法(为我自定义使用 AD 字段而被覆盖)时,SecurityContextHolder.getContext().getAuthentication()返回null. 这是一个问题——它表明(对我而言,我理解 Spring 对会话的处理)身份验证过程尚未完成,并且与待验证用户相关的会话 ID 尚未生成。也就是说,Spring 在身份验证时清除匿名会话以支持新的会话 ID,但该会话在loadUserAuthorities()运行时显然不可用。

那我该怎么办?正如我所说,我的 hack 有效,而且它似乎是安全的(提供正确的注释),但它并不理想。如何正确将我的自定义用户信息存储到会话范围的用户对象中,同时通过 LDAP(通过 TLS)维护针对 AD 的身份验证?

与往常一样,我喜欢并感谢我从 SO 社区获得的所有帮助。

0 投票
0 回答
2902 浏览

authentication - javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials] 在 spring security3 中通过 LDAP 进行身份验证时

我正在尝试通过 LDAP 对用户进行身份验证并通过 Database.LDAP 目录进行授权,其中包含具有相应组的用户,并且我想在成功验证时获取该组,并在验证后从数据库中获取具有相应组的 ROLE。

我的弹簧安全配置文件如下。

在调试整个应用程序时,我在 BindAuthenticator 调用的 AbstractContextSource 中得到了 DirContext 的空值。

从过去 2 天开始,我一直在努力解决这个错误。任何帮助将不胜感激。如果您需要任何额外的信息,请告诉我。可能是,我的 LDAP 目录结构是错误的。我错在哪里,我不知道?

0 投票
1 回答
1121 浏览

spring - spring security 3.1中如何配置AD认证和DB授权

我已经完成了以下问题

Spring Security 3 Active Directory 身份验证、数据库授权

我们可以只在 spring security xml 文件中配置,而不是委托方法。

你能指导我如何做到这一点。

这是 Spring security 2.5 的工作配置,但我不知道如何在 3 或 3.1 中使用

0 投票
1 回答
220 浏览

spring-mvc - 如何使用 Spring Security 处理基于用户权限的授权?

我想让我的用户根据那里的权限查看 Web 应用程序的某些部分(可由在应用程序中具有特定权限的用户编辑)。

考虑一个具有 hasAccessToView1、hasAcessToView2、...布尔属性的用户实体。

如果用户中的相应布尔属性设置为 true ,我如何配置 Spring Security 以便能够在我的 jsps 中使用 Spring Security 标记来显示某些内容?

在从数据库中检索相应的用户之前,我还需要从 ldap 服务器对我的用户进行身份验证。

我想我将需要一个自定义身份验证提供程序。

0 投票
1 回答
1003 浏览

java - Spring-Integration 中的安全模型

请帮助我理解,如何在 Spring-integration 中实现安全性。如果流程是假设 JMS Queue-> Spring-integration -> Webservice,那么 spring-integration 中的 2 个通道一个用于 JMS,另一个用于 WS 将连接。这些通道是否会向端点(JMS 和 WS)提供一些身份验证令牌类型的详细信息并执行路由。请分享有关弹簧集成安全性的任何有用信息

谢谢