如何创建一个可以获取属性值模式的LdapUserDetailsMapper?

时间:2013-02-22 04:10:41

标签: java spring-security spring-security-ldap

我创建了一个自定义LdapUserDetailsMapper类,用于将扩展属性映射到自定义UserDetails类,该类包含displayNametelephoneNumber和{{1}等内容的额外属性举几个例子。我设法通过访问department的属性,即

来填充这些属性
DirContextOperation

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

res.givenName = ctx.getStringAttribute("givenName");

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

1 个答案:

答案 0 :(得分:1)

我想象的一个可能的解决方案是使用Spring Expression Language。实现您自己的EvaluationContext,它将DirContextOperations实例作为根对象,并将porperty读取转发到其getStringAttribute()方法。这种情况下的表达式并不完全是LDAP表达式,但我猜SpEL更强大,所以它可能更好。