问题标签 [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.
java - 如何创建可以采用属性值模式的 LdapUserDetailsMapper?
我创建了一个自定义LdapUserDetailsMapper
类来将扩展属性映射到一个自定义UserDetails
类,该类包含诸如displayName
,之类的额外属性telephoneNumber
,department
仅举几例。我设法通过访问属性来填充这些属性DirContextOperation
,即
但是,我不希望对此进行硬编码,并且希望这些属性可配置,这很好,尽管我也想使用 LDAP 表达式来返回由该表达式产生的值,即
这当然行不通。我可以在任何连接之前手动解析模式并检索组件,但这听起来像是我想象框架已经提供的工作。
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
login - 弹簧安全;自定义过滤器和用户服务引用不一起工作
我正在尝试使用自定义过滤器实现 spring 安全授权。
安全.xml
CustomUserDetailsService
}
我的身份验证入口点
MyAuthenticationSuccessHandler
MyAuthenticationFailureHandler
当我尝试登录时,它来到了 CustomUserDetailsService 并成功地从数据库中检索了用户详细信息。
但无论凭据是否正确,它总是访问 authenticationFailureHandler 。( INFO : com.my.org.MyAuthenticationFailureHandler - point-3
)
谁能帮我解决这个问题?谢谢
grails - 如何将 LDAP 用户与 Grails 中 Spring Security 创建的 PERSON 表集成?
我们正在创建一个 grails 应用程序,我们希望用户使用他们的 Active Directory 凭据登录。此外,我们希望让此应用程序的业务所有者能够控制谁有权访问某些链接(操作)。因此,我们在 grails 应用程序中使用以下插件:
- Spring 安全核心
- Spring 安全 LDAP
- 弹簧安全用户界面
因为我们希望授权业务用户在必要时动态创建具有某些权限(操作)的自定义角色,所以我们认为最好的 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 行或对象,但您更喜欢引用它。
我也在这里发布了这个问题:
谢谢,
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
)?
任何帮助表示赞赏。
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 社区获得的所有帮助。
authentication - javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials] 在 spring security3 中通过 LDAP 进行身份验证时
我正在尝试通过 LDAP 对用户进行身份验证并通过 Database.LDAP 目录进行授权,其中包含具有相应组的用户,并且我想在成功验证时获取该组,并在验证后从数据库中获取具有相应组的 ROLE。
我的弹簧安全配置文件如下。
在调试整个应用程序时,我在 BindAuthenticator 调用的 AbstractContextSource 中得到了 DirContext 的空值。
从过去 2 天开始,我一直在努力解决这个错误。任何帮助将不胜感激。如果您需要任何额外的信息,请告诉我。可能是,我的 LDAP 目录结构是错误的。我错在哪里,我不知道?
spring - spring security 3.1中如何配置AD认证和DB授权
我已经完成了以下问题
Spring Security 3 Active Directory 身份验证、数据库授权
我们可以只在 spring security xml 文件中配置,而不是委托方法。
你能指导我如何做到这一点。
这是 Spring security 2.5 的工作配置,但我不知道如何在 3 或 3.1 中使用
spring-mvc - 如何使用 Spring Security 处理基于用户权限的授权?
我想让我的用户根据那里的权限查看 Web 应用程序的某些部分(可由在应用程序中具有特定权限的用户编辑)。
考虑一个具有 hasAccessToView1、hasAcessToView2、...布尔属性的用户实体。
如果用户中的相应布尔属性设置为 true ,我如何配置 Spring Security 以便能够在我的 jsps 中使用 Spring Security 标记来显示某些内容?
在从数据库中检索相应的用户之前,我还需要从 ldap 服务器对我的用户进行身份验证。
我想我将需要一个自定义身份验证提供程序。
java - Spring-Integration 中的安全模型
请帮助我理解,如何在 Spring-integration 中实现安全性。如果流程是假设 JMS Queue-> Spring-integration -> Webservice,那么 spring-integration 中的 2 个通道一个用于 JMS,另一个用于 WS 将连接。这些通道是否会向端点(JMS 和 WS)提供一些身份验证令牌类型的详细信息并执行路由。请分享有关弹簧集成安全性的任何有用信息
谢谢