Spring Security LDAP认证过滤器中大括号的作用是什么?支持其他参数吗?
Spring Security LDAP 中
{0}占位符的作用说明 核心本质
你看到的{n}是Spring Security LDAP模块预定义的参数占位符,和“等于”没有任何关系,网传的相关说法属于错误解读。它的作用是在认证流程中动态替换用户身份相关的上下文值,同时内置了特殊字符转义逻辑避免LDAP注入风险。
不同占位符的具体含义
目前Spring Security LDAP仅支持{0}和{1}两个占位符,映射规则固定,没有其他可用的数值参数:
{0}:固定替换为用户登录时输入的用户名原始值
你示例代码中的userDnPatterns("uid={0},ou=people")就是典型用法:当用户输入test作为用户名登录时,会自动生成完整用户DNuid=test,ou=people,到配置的LDAP服务下查询对应用户。{1}:固定替换为匹配到的用户的完整DN(仅当用户基础查询完成后才会生效)
通常用在组搜索过滤器场景,比如groupSearchFilter("member={1}"),会替换为当前用户的完整DN,搜索该用户归属的所有用户组。
注意事项
不要手动拼接用户名、用户DN到LDAP查询规则中,强制使用占位符可以避免手动处理转义的疏漏,有效防范LDAP注入攻击。
内容的提问来源于stack exchange,提问作者alalackck
相关产品推荐
相关产品推荐

