使用System.DirectoryServices.Protocols实现对AD的简单操作

转载自:http://blog.joycode.com/liuhuimiao/articles/30654.aspx

        System.DirectoryServices.Protocols.dll是.NET2.0新增加的一个针对目录服务访问协议处理的组件,其下只有一个System.DirectoryServices.Protocols命名空间。在该命名空间下,主要有LDAP、DSML两种国际标准协议的一系列实现类。通过这些类,完全可以很方便地实现对目录的操作管理,这个实现步骤就有点类似你利用ADO.NET操作数据库一样方便。

       在System.DirectoryServices.Protocols命名空间里,主要有这样几个类:LdapConnection(LDAP协议方式的目录连接类,负责创建LDAP连接并绑定LDAP服务器)、DsmlSoapHttpConnection(DSML协议方式的目录连接类、负责创建DSML连接并绑定DSML服务器)、AddRequest/AddResponse、ModifyRequest/ModifyResponse、ModifyDNRequest/ModifyDNResponse、CompareRequest/CompareResponse、SearchRequest/SearchResponse、DeleteRequest/DeleteResponse、DsmlRequestDocument/DsmlResponseDocument。这些类在实际编程应用中的关系如下图:
o_DirectoryServices.Protocols.jpg
        用户利用LdapConnection/DsmlSoapHttpConnection跟LDAP服务器/DSML服务器建立连接并绑定后,即可创建一系列相应的操作请求(如增加一新对象请求AddRequest),然后通过连接对象的SendRequest方法把请求命令发送到服务器,服务器根据请求进行相应处理后,把应答信息传回给客户端。需要指出的是,对于DSML方式的请求,还可以利用DsmlRequestDocument将AddRequest、ModifyRequest、ModifyDNRequest、CompareRequet、SearchRequest和DeleteRequest的任意几个请求组合组装起来,一并发送到DSML服务器进行处理。

        LdapConnection的使用

  1. 创建LDAP连接并进行绑定:

    NetworkCredential credential = new NetworkCredential("Administrator", "password");

     

    LdapConnection ldapConnection = new LdapConnection("192.168.0.6");

    ldapConnection.Credential = credential;

    ldapConnection.Bind();

  2. 创建一个请求,使其达到增加一个OU,其名称为MyOU的目的。创建后的MyOU其DN为OU=MyOU,DC=mydomain,DC=local:

    string targetDN = "DC=mydomain,DC=local";

     

    // 增加一个名为MyOU的组织单元

    string ou = "OU=MyOU," + targetDN;

    string objectClass = "organizationalUnit";

     

    AddRequest addRequest = new AddRequest(ou, objectClass);

  3. 把请求发送到服务器进行处理:

    ldapConnection.SendRequest(addRequest);
    执行完SendRequest()后,如果没有出现异常,那么MyOU已经成功增加了。当然,如果你还需要进一步对SendRequest()操作后的应答信息进行处理的话,也可以类似下面这样写,其中将在屏幕上输出“Success“的结果码:

    AddResponse addResponse = (AddResponse)ldapConnection.SendRequest(addRequest);

     

    Console.WriteLine(addResponse.ResultCode.ToString());

        至此,一个LDAP请求已经处理完毕。上面的完整代码可以点这里进行查看

using

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于在Gradle的仓库地址中使用了不安全的协议(如HTTP)而导致的。从Gradle 7.2版本开始,默认不再支持使用不安全的协议,需要将仓库地址修改为安全的协议(如HTTPS),或者允许使用不安全的协议。 解决这个问题的方法有两种: 第一种方法是在build.gradle文件中将使用不安全协议的仓库地址修改为安全协议。例如,可以将原来的仓库地址"http://maven.aliyun.com/nexus/content/groups/public/"修改为"https://maven.aliyun.com/nexus/content/groups/public/"。 第二种方法是在build.gradle文件中添加配置,允许使用不安全的协议。例如,可以在repositories部分的maven配置中添加"allowInsecureProtocol = true",如下所示: ``` repositories { google() maven { allowInsecureProtocol = true url "http://maven.aliyun.com/nexus/content/groups/public/" } } ``` 另外,请确保Android Studio的Gradle插件版本与build.gradle文件中的classpath配置一致,避免出现版本不匹配的错误。 通过以上两种方法,您应该能够解决"org.gradle.api.InvalidUserCodeException: Using insecure protocols with repositories, without explicit opt-in, is unsupported"的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [AndroidStudio常见错误解决](https://blog.csdn.net/ACM_BMW/article/details/123968194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值