解决LDAP客户端统一认证DirectoryEntry出现 Ox80005000的问题

初始源码如下:

public bool open(String username,String password)

 {

            try

            {

                string url = $"ldap://{m_host}:{m_port}/{m_baseDn}";

                String m_user = $"{username},{m_userDn}";

                DirectoryEntry entry = new DirectoryEntry(url, m_user, password, AuthenticationTypes.None);

                if (entry == null)

                {

                    return false;

                }

                else

                {

                    try

                    {

                        object native = entry.NativeObject;

                        return true;

                    }

                    catch (System.Exception ex)

                    {

                        throw new Exception(ex.Message);

                    }

                }

            }

            catch(Exception ex)

            {

                throw ex;

            }

        }

结果始终出现Exception,异常代码如下:0x80005000

在网上查阅相关信息均是有关IIS设置的问题。

那么问题就来了,客户端访问ldap服务(使用ldap admin或ladp brower都可以正常访问,因此服务端不存在问题),不可能客户端还需要存在IIS,因此这个问题不可能是像网上所述。

而且本人使用java写了ldap访问的代码,一次验证通过。

此时突然一个想法一闪而过,DirectoryEntry构造函数中参数path(即代码中变量url)起头大小写的问题。(虽然java中使用小写ladp一次验证通过,可是不代码C#就可以通过)经过验证,果然就是这个问题。Bravo,经过自己搭建OpenLdap服务,学习ldap admin的使用,一天半终于搞定。

正确源码:

public bool open(String username,String password)

        {

            try

            {

                string url = $"LDAP://{m_host}:{m_port}/{m_baseDn}";

                String m_user = $"{username},{m_userDn}";

                DirectoryEntry entry = new DirectoryEntry(url, m_user, password, AuthenticationTypes.None);

                if (entry == null)

                {

                    return false;

                }

                else

                {

                    try

                    {

                        object native = entry.NativeObject;

                        return true;

                    }

                    catch (System.Exception ex)

                    {

                        throw new Exception(ex.Message);

                    }

                }

            }

            catch(Exception ex)

            {

                throw ex;

            }

        }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值