spring security LDAP获取用户信息

spring security LDAP获取用户信息,第1张

概述很多企业内部使用LDAP保存用户信息,这章我们来看一下如何从LDAP中获取Spring Security所需的用户信息。首先在pom.xml中添加ldap所需的依赖。<dependency><groupId>org.apache.directory.server</groupId><artifactId>apacheds-server-jndi</artifactId><version>1.5.5</version></dependency><dependency><groupId>org.springframework.ldap</groupId><artifactId>spring-ldap</artifactId><version>1.2.1</version></dependency>然后修改配置文件,使用内嵌的ldap服务器和ldap-authentication-provider。<ldap-server ldif="classpath:users.ldif" port="33389" root="dc=family168,dc=com"/><ldap-authentication-providergroup-search-filter="member={0}"group-search-base="ou=groups"user-search-base="ou=people"user-search-filter="uid={0}"/>这里配置内嵌的ldap服务器从users.ldif文件中读取初始化数据,端口使用33389,查询目录的根目录设置为dc=family168,dc=com。ldap-authentication-provider设置查找组和用户的配置,分别使用ou=groups表示组,使用ou=people表示用户。用于保存ldap初始信息的文件内容如下:dn: ou=groups,dc=family168,dc=comobjectclass: topobjectclass: organizationalUnitou: groupsdn: ou=people,dc=family168,dc=comobjectclass: topobjectclass: organizationalUnitou: peopledn: uid=user,ou=people,dc=family168,dc=comobjectclass: topobjectclass: personobjectclass: organizationalPersonobjectclass: inetOrgPersoncn: FirstName LastNamesn: LastNameuid: useruserPassword: userdn: uid=admin,ou=people,dc=family168,dc=comobjectclass: topobjectclass: personobjectclass: organizationalPersonobjectclass: inetOrgPersoncn: FirstName LastNamesn: LastNameuid: adminuserPassword: admindn: cn=user,ou=groups,dc=family168,dc=comobjectclass: topobjectclass: groupOfNamescn: ROLE_USERmember: uid=user,ou=people,dc=family168,dc=commember: uid=admin,ou=people,dc=family168,dc=comdn: cn=admin,ou=groups,dc=family168,dc=comobjectclass: topobjectclass: groupOfNamescn: ROLE_ADMINmember: uid=admin,ou=people,dc=family168,dc=com这里在dc=family168,dc=com目录下创建了groups和people两个目录,然后在people目录下创建了user和admin两个用户。在groups目录下创建了admin和user两个目录,并将user和admin两个用户与groups的user目录关联,又将admin用户与groups的admin目录关联。在系统初始化后,Spring Security会在people下读取用户信息,而对应的权限信息是对应用户所关联的groups信息,Spring Security会将查询到的权限信息加上ROLE_前缀,如cn=admin最终会转换为ROLE_ADMIN。

很多企业内部使用LDAP保存用户信息,这章我们来看一下如何从LDAP中获取Spring Security所需的用户信息。

首先在pom.xml中添加ldap所需的依赖。

  org.apache.directory.server  apacheds-server-jndi  1.5.5  org.springframework.ldap  spring-ldap  1.2.1    

然后修改配置文件,使用内嵌的ldap服务器和ldap-authentication-provIDer。

<ldap-authentication-provider
group-search-filter="member={0}"
group-search-base="ou=groups"
user-search-base="ou=people"
user-search-filter="uid={0}"
/>

这里配置内嵌的ldap服务器从users.ldif文件中读取初始化数据,端口使用33389,查询目录的根目录设置为dc=family168,dc=com。

ldap-authentication-provIDer设置查找组和用户的配置,分别使用ou=groups表示组,使用ou=people表示用户。

用于保存ldap初始信息的文件内容如下:

dn: ou=people,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people

dn: uID=user,ou=people,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
cn: Firstname Lastname
sn: Lastname
uID: user
userPassword: user

dn: uID=admin,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
cn: Firstname Lastname
sn: Lastname
uID: admin
userPassword: admin

dn: cn=user,ou=groups,dc=com
objectclass: top
objectclass: groupOfnames
cn: RolE_USER
member: uID=user,dc=com
member: uID=admin,dc=com

dn: cn=admin,dc=com
objectclass: top
objectclass: groupOfnames
cn: RolE_admin
member: uID=admin,dc=com

这里在dc=family168,dc=com目录下创建了groups和people两个目录,然后在people目录下创建了user和admin两个用户。在groups目录下创建了admin和user两个目录,并将user和admin两个用户与groups的user目录关联,又将admin用户与groups的admin目录关联。

在系统初始化后,Spring Security会在people下读取用户信息,而对应的权限信息是对应用户所关联的groups信息,Spring Security会将查询到的权限信息加上RolE_前缀,如cn=admin最终会转换为RolE_admin。

总结

以上是内存溢出为你收集整理的spring security LDAP获取用户信息全部内容,希望文章能够帮你解决spring security LDAP获取用户信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1270011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存