当前位置: 首页 > news >正文

a4网站建设手机兼职软件推荐app

a4网站建设,手机兼职软件推荐app,网站开发量,全国企业公示信息公示网官网LADP概述 LDAP#xff08;轻量目录访问协议#xff09;是一种用于访问和维护分布式目录信息服务的协议。目录服务是一种存储和检索信息的服务#xff0c;通常用于存储组织内的用户信息、组织结构、网络设备等数据。LDAP是一种轻量级的协议#xff0c;设计用于在目录中进行查…LADP概述 LDAP轻量目录访问协议是一种用于访问和维护分布式目录信息服务的协议。目录服务是一种存储和检索信息的服务通常用于存储组织内的用户信息、组织结构、网络设备等数据。LDAP是一种轻量级的协议设计用于在目录中进行查找和修改操作而不是用于传输大量的数据。 以下是LDAP的一些基本概念 目录服务Directory Service 目录服务是一种专门设计用于存储和检索信息的服务。与传统数据库不同目录服务更注重提供高效的读取操作支持快速的数据检索。LDAP是一种协议用于与目录服务进行通信。 目录Directory 目录是一种组织结构化数据的方式通常包含多个条目Entry。每个条目包含一组属性值用于描述特定实体如用户、组织单位、设备等的信息。 条目Entry 条目是目录中的基本单位类似于数据库中的一行记录。每个条目都有一个唯一的标识符称为DNDistinguished Name。 属性Attribute 属性是条目中存储的信息的命名和值对。例如一个用户条目可能包含属性如姓名、电子邮件地址、电话号码等。 DNDistinguished Name DN是每个条目在目录中的唯一标识符由一系列与目录结构相关的名称组成。DN通常是一个层次结构例如cnjohn,ouusers,dcexample,dccom。 LDAP协议 LDAP定义了客户端和目录服务器之间进行通信的规则。它使用TCP/IP协议栈通常在389端口上运行。LDAP协议支持多种操作包括搜索、添加、删除、修改等以便对目录中的数据进行操作。 LDAP被广泛用于企业和组织中用于集中管理用户、组织结构、设备等信息。它是许多身份验证和访问控制系统的基础如单点登录SSO系统。 步骤一配置LDAP连接属性 在application.properties或application.yml文件中添加LDAP连接属性例如LDAP服务器URL、用户名、密码等。 步骤二创建LDAP配置类 创建一个Configuration类并使用EnableWebSecurity注解启用Web安全性配置。在配置类中可以使用LDAP的相关配置属性来配置LDAP连接和认证提供者。 步骤三创建LDAP认证提供者 实现UserDetailsService接口并重写其中的loadUserByUsername()方法要在Spring Boot项目中整合LDAP轻量级目录访问协议可以使用Spring LDAP模块。以下是一个简单的示例展示如何在Spring Boot中整合LDAP并提供一些常见的操作示例。 整合步骤 1.引入POM依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-ldap/artifactId /dependency2.在application.properties或application.yml文件中提供LDAP连接的配置信息 ldap.urlldap://your-ldap-server:389 ldap.basedcexample,dccom ldap.userDnPatternuid{0},oupeople ldap.userSearchBaseoupeople3.创建LdapDemoConfig package com.example.springbootidapdemo.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.ldap.core.LdapTemplate; import org.springframework.ldap.core.support.LdapContextSource;Configuration public class LdapDemoConfig {Beanpublic LdapTemplate ldapTemplate() {LdapContextSource contextSource new LdapContextSource();contextSource.setUrl(ldap://localhost:389);contextSource.setBase(dcexample,dccom);contextSource.setUserDn(cnadmin,dcexample,dccom);contextSource.setPassword(adminpassword);contextSource.afterPropertiesSet();LdapTemplate ldapTemplate new LdapTemplate(contextSource);ldapTemplate.setIgnorePartialResultException(true);ldapTemplate.setDefaultTimeLimit(1000);ldapTemplate.setDefaultCountLimit(100);return ldapTemplate;} } 4.方法概述及对应Demo 前提需要提供基础DN、过滤器、搜索控件和属性映射器。实际使用时需要根据LDAP目录的结构和属性进行相应的配置。 1.ldapTemplate.find(根据指定的搜索条件在LDAP目录中查找条目并返回结果) public T T find(String dn,String filter,SearchControls controls,AttributesMapperT mapper)dn: 搜索的基础DNDistinguished Name表示搜索的起始位置。 filter: LDAP搜索过滤器定义要匹配的条目的条件。 controls: 搜索控件用于配置搜索的一些参数例如搜索范围、返回的属性等。 mapper: 用于将搜索结果映射为对象的 AttributesMapper。 该方法会执行LDAP搜索并返回满足条件的第一个条目。如果没有匹配的条目返回 null。 Demo如下 Service public class LdapService {Autowiredprivate LdapTemplate ldapTemplate;public User findUser(String username) {String baseDn oupeople,dcexample,dccom;String filter (uid username );SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);return ldapTemplate.find(baseDn, filter, controls, new UserAttributesMapper());}private static class UserAttributesMapper implements AttributesMapperUser {Overridepublic User mapFromAttributes(Attributes attributes) throws NamingException {return new User(/* user properties */);}} }下述demo只展示关键代码块、重复描述不再过多赘述 2.ldapTemplate.findAll根据指定的搜索条件在LDAP目录中查找多个条目并返回结果列表 public T ListT findAll(String base,String filter,SearchControls controls,AttributesMapperT mapper)base: 搜索的基础DNDistinguished Name表示搜索的起始位置。 该方法会执行LDAP搜索并返回满足条件的所有条目的列表。如果没有匹配的条目返回空列表。 Demo如下 public ListUser findAllUsers() {String baseDn oupeople,dcexample,dccom;String filter (objectClassperson); SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);return ldapTemplate.findAll(baseDn, filter, controls, new UserAttributesMapper());}3.ldapTemplate.findOne根据指定的搜索条件在LDAP目录中查找单个条目并返回结果 注意如果没有匹配的条目抛出 javax.naming.NameNotFoundException 异常。如果有匹配的多个条目抛出 javax.naming.NamingException 异常 public T T findOne(String dn,String filter,AttributesMapperT mapper)Demo如下 public User findUser(String username) {String baseDn oupeople,dcexample,dccom;String filter (uid username );return ldapTemplate.findOne(baseDn, filter, new UserAttributesMapper());}4.ldapTemplate.findByDn根据给定的DNDistinguished Name查找单个条目并返回结果 public T T findByDn(String dn, AttributesMapperT mapper)该方法会执行LDAP搜索并返回指定DN的条目如果没有找到匹配的条目返回 null。 Demo如下 public User findUserByDn(String userDn) {return ldapTemplate.findByDn(userDn, new UserAttributesMapper());}5.ldapTemplate.findForStream用于从 LDAP 目录中以流的方式获取多个条目的结果 public T StreamT findForStream(String base,String filter,SearchControls controls,AttributesMapperT mapper)ldapTemplate.findForStream 方法会执行LDAP搜索并返回一个流Stream其中包含满足条件的所有条目的结果。通过使用流的方式可以更高效地处理大量的搜索结果而不必一次性将所有结果加载到内存中。 Demo如下 public ListUser findAllUsers() {String baseDn oupeople,dcexample,dccom;String filter (objectClassperson);SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);StreamUser userStream ldapTemplate.findForStream(baseDn, filter, controls, new UserAttributesMapper());return userStream.collect(Collectors.toList());}注意ldapTemplate.findForStream 方法是从 Spring LDAP 2.2 版本开始引入的。确保使用的是兼容的 Spring LDAP 版本。如果版本较旧可能需要升级到兼容的版本或者使用其他方法来处理 LDAP 搜索结果流 6.ldapTemplate.search用于执行灵活的LDAP搜索并返回结果 public T ListT search(String base,String filter,SearchControls controls,AttributesMapperT mapper)与之前介绍的 ldapTemplate.findAll 方法相似ldapTemplate.search 方法也执行LDAP搜索但它提供更多的灵活性可以更精确地配置搜索参数。该方法返回满足条件的所有条目的列表。 Demo如下 public ListUser searchUsers(String filter) {String baseDn oupeople,dcexample,dccom;SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);return ldapTemplate.search(baseDn, filter, controls, new UserAttributesMapper());}7.ldapTemplate.searchForContext(用于执行LDAP搜索并返回搜索结果的上下文DirContext)) public DirContext searchForContext(String base,String filter,SearchControls controls)与之前介绍的 ldapTemplate.search 方法相比ldapTemplate.searchForContext 返回的是搜索结果的上下文而不是直接返回映射后的对象列表。这样的设计使得可以更灵活地处理搜索结果包括对搜索结果的进一步处理、解析和操作。 Demo如下 public DirContext searchForContext(String filter) {String baseDn oupeople,dcexample,dccom;SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);return ldapTemplate.searchForContext(baseDn, filter, controls);}8.ldapTemplate.searchForObject用于执行LDAP搜索并返回单个对象作为结果 public T T searchForObject(String base,String filter,SearchControls controls,ClassT requiredType)requiredType: 期望的返回类型。 该方法执行LDAP搜索并返回单个对象而不是返回一个对象列表。这可以方便地用于查找特定条件下的唯一条目。 Demo如下 public User searchForUser(String username) {String baseDn oupeople,dcexample,dccom;String filter (uid username );SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);return ldapTemplate.searchForObject(baseDn, filter, controls, User.class);}注意如果没有找到匹配的条目ldapTemplate.searchForObject 方法将返回 null 9.ldapTemplate.searchForStream用于执行LDAP搜索并返回结果的流Stream public T StreamT searchForStream(String base,String filter,SearchControls controls,ClassT requiredType)该方法执行LDAP搜索并返回一个流Stream其中包含满足条件的所有条目的结果。通过使用流的方式可以更高效地处理大量的搜索结果而不必一次性将所有结果加载到内存中。 Demo如下 public ListUser searchForUsers(String filter) {String baseDn oupeople,dcexample,dccom;SearchControls controls new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);StreamUser userStream ldapTemplate.searchForStream(baseDn, filter, controls, User.class);return userStream.collect(Collectors.toList());}10.ldapTemplate.rebind用于重新绑定更新LDAP目录中的条目 public void rebind(String dn, Object obj, Attributes attributes)obj: 要重新绑定的对象。 该方法会将指定的对象和属性重新绑定到LDAP目录中的指定DN。如果指定的DN不存在则会创建新的条目。如果已存在具有相同DN的条目则会更新现有条目的属性。 public void updateUserInfo(String userDn, User newUser) {// Assume User class has appropriate getters and setters for user attributesAttributes attributes // create or update attributes based on newUserldapTemplate.rebind(userDn, newUser, attributes);}注意具体的 Attributes 对象的创建或更新需要根据您的数据模型和需求进行调整 11.ldapTemplate.rename用于重命名移动LDAP目录中的条目 public void rename(String oldDn, String newDn)oldDn: 要重命名的旧DN表示LDAP目录中的一个条目。 newDn: 新的DN表示条目在LDAP目录中的新位置。 该方法会将指定的条目从旧的DN移动到新的DN实现重命名的效果。 Demo如下 public void renameUser(String oldDn, String newDn) {ldapTemplate.rename(oldDn, newDn);}注意新的DN必须包含新的父级DN以确保条目被正确移动到新的位置。例如如果要将用户从 oupeople,dcexample,dccom 移动到ouotherPeople,dcexample,dccom则新的DN应为uidjohn,ouotherPeople,dcexample,dccom。 12.ldapTemplate.modifyAttributes用于修改LDAP目录中条目的属性值 public void modifyAttributes(String dn, ModificationItem[] mods)mods: 要应用的修改项数组表示要对条目进行的修改操作。 修改项ModificationItem由两个属性组成修改操作类型DirContext.ADD_ATTRIBUTE、DirContext.REMOVE_ATTRIBUTE 或 DirContext.REPLACE_ATTRIBUTE和要修改的属性Attribute。 Demo如下 public void updateUserPassword(String userDn, String newPassword) {ModificationItem[] mods new ModificationItem[1];Attribute attribute new BasicAttribute(userPassword, newPassword);mods[0] new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attribute);ldapTemplate.modifyAttributes(userDn, mods);}上述示例中updateUserPassword 方法使用了 ldapTemplate.modifyAttributes 来根据用户DNuserDn修改用户密码。首先创建一个 ModificationItem 数组包含要进行的修改操作。在这个示例中它只包含一项用新密码替换(DirContext.REPLACE_ATTRIBUTE)userPassword 属性。然后将这个修改项数组传递给 ldapTemplate.modifyAttributes 方法以便进行修改 13.ldapTemplate.authenticate(用于对LDAP进行认证操作) public boolean authenticate(String base, String filter, String password)password: 用户密码用于认证操作。 该方法用于验证给定的用户密码是否与LDAP中指定条件的用户匹配。如果匹配成功则返回 true否则返回 false。 Demo如下 public boolean authenticateUser(String username, String password) {String baseDn oupeople,dcexample,dccom;String filter (uid username );return ldapTemplate.authenticate(baseDn, filter, password);}上述示例中authenticateUser 方法使用了 ldapTemplate.authenticate 来验证用户的身份。需要提供基础DN、过滤器和用户密码。该方法将验证提供的用户名和密码是否匹配LDAP中指定条件的用户如果匹配成功则返回 true表示认证通过。
http://www.lakalapos1.cn/news/37752/

相关文章:

  • 手机网站的制作农产品网站开发背景
  • 成都网站建设58h5效果展示网站
  • 做的网站第二年续费多钱新艾尚网站建设推广
  • 网站设计开发的销售主要工作专门做网站建设的
  • 网站建设上传图片不显示网站开发实验总结
  • 曲阜市住房和城乡建设局网站网站制作地点
  • 企业网站托管方案内容wordpress建立数据库
  • h5美食制作网站模板网页制作程序代码
  • 同城信息网站建设网站制作需要学习什么
  • 网站建设的自查报告阿里云的网站建设方案
  • 天津建站方案淮南建设公司网站
  • 网站核验单第一次网页设计实训总结
  • 织梦搞笑图片网站源码查看网站源代码建站可以
  • 手机系统优化软件深圳企业seo
  • 江苏省建设考试网站sharepoint网站开发
  • 企业网站建站程序山东公路建设集团网站
  • 电商网站规划与设计论文微信公众号小程序制作
  • 阿里云 wordpress 插件网站流量 龙优化软件
  • 做网站网站需要注意什么常州个性化网站建设
  • 网站建设讲师招聘wordpress 电子杂志
  • 做网站的公司怎么转型精美网页源码网站
  • 网站部署步骤网站开发广西建设执业注册中心中心网站
  • 电子商务网站建设实验天河网站建设外包
  • 地方网站欣赏上海前端
  • 廊坊网站制作公司国外 网站 设计
  • 怎么夸客户网站做的好嘉定专业网站制作公司
  • 云南网站优化无忧网站
  • 网站模板文件的名字四川省城乡住房建设部网站首页
  • 做简单的企业网站需要学哪些对招聘网站页面设计做建议
  • 品牌网站建设浩森宇特会网站开发没学历