欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈Spring Security LDAP简介

程序员文章站 2024-02-23 19:02:16
1.概述 在本快速教程中,我们将学习如何设置spring security ldap。 在我们开始之前,了解一下ldap是什么? - 它代表轻量级目录访问协议。它是一种...

1.概述

在本快速教程中,我们将学习如何设置spring security ldap。

在我们开始之前,了解一下ldap是什么? - 它代表轻量级目录访问协议。它是一种开放的,与供应商无关的协议,用于通过网络访问目录服务。

2. maven dependency

首先,让我们看看我们需要的maven依赖项:

<dependency>
  <groupid>org.springframework.security</groupid>
  <artifactid>spring-security-ldap</artifactid>
</dependency>
 
<dependency>
  <groupid>org.apache.directory.server</groupid>
  <artifactid>apacheds-server-jndi</artifactid>
  <version>1.5.5</version>
</dependency>

注意:我们使用apacheds作为ldap服务器,它是一个可扩展和可嵌入的目录服务器。

3. java configuration

接下来,我们来讨论我们的spring security java配置:

public class securityconfig extends websecurityconfigureradapter {
 
  @override
  protected void configure(authenticationmanagerbuilder auth) throws exception {
    auth.ldapauthentication()
      .usersearchbase("ou=people")
      .usersearchfilter("(uid={0})")
      .groupsearchbase("ou=groups")
      .groupsearchfilter("member={0}")
      .contextsource()
      .root("dc=baeldung,dc=com")
      .ldif("classpath:users.ldif");
  }
}

这当然只是配置的ldap相关部分 - 可以在此处找到完整的java配置

4. xml configuration

现在,我们来看看相应的xml配置:

<authentication-manager>
  <ldap-authentication-provider
   user-search-base="ou=people"
   user-search-filter="(uid={0})"
   group-search-base="ou=groups"
   group-search-filter="(member={0})">
  </ldap-authentication-provider>
</authentication-manager>
  
<ldap-server root="dc=baeldung,dc=com" ldif="users.ldif"/>

同样,这只是配置的一部分 - 与ldap相关的部分;完整的xml配置可以在这里找到。

5. ldap数据交换格式

ldap数据可以使用ldap数据交换格式(ldif)表示 - 这是我们的用户数据的示例:

dn: ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: organizationalunit
ou: groups
 
dn: ou=people,dc=baeldung,dc=com
objectclass: top
objectclass: organizationalunit
ou: people
 
dn: uid=baeldung,ou=people,dc=baeldung,dc=com
objectclass: top
objectclass: person
objectclass: organizationalperson
objectclass: inetorgperson
cn: jim beam
sn: beam
uid: baeldung
userpassword: password
 
dn: cn=admin,ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: groupofnames
cn: admin
member: uid=baeldung,ou=people,dc=baeldung,dc=com
 
dn: cn=user,ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: groupofnames
cn: user
member: uid=baeldung,ou=people,dc=baeldung,dc=com

6. the application

最后,这是我们的简单应用:

@controller
public class mycontroller {
 
  @requestmapping("/secure")
  public string secure(map<string, object> model, principal principal) {
    model.put("title", "secure area");
    model.put("message", "only authorized users can see this page");
    return "home";
  }
}

7.总结

在这本使用ldap的spring security快速指南中,我们学习了如何使用ldif配置基本系统并在spring security配置ldap。

可以在中找到本教程的完整实现 - 这是一个基于eclipse的项目,因此它应该很容易导入和运行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。