在Linux上通过NTLM认证连接到AD服务器(未完结)

这篇文章目前还没有实现具体的功能,只实现了明文登录,因为我缺少一些数据,比如通过密码生成hash,以及通过challenge生成response,我不知道怎么实现,因此这篇文章也是一个交流的文章,希望大佬看见提个建议,我在功能实现后也会补全该文章。

环境:1.服务器 windows server 2022 中文版 AD (推荐下载windows server 2012 R2)

           2.语言:C++

           3.实现流程中的API:依赖openldap 2.6库 

1.NTLM认证是什么?流程是什么?AD服务器是什么?

在这里我不过多述说,推荐还不懂的浏览以下文章,搞懂NTLM流程

http://t.csdnimg.cn/MF2DT

2.通过LDAP连接到AD服务器

2.1:创建LDAP句柄指针

        之后所有的操作都是基于LDAP指针进行操作,例如增删改查AD服务的数据

//ldap是自定义的,uri是string类型的IP地址,端口AD都默认为389 ldap://<IP>:389
LDAP *ldap;
std::string uri = "ldap://192.168.XXX.XXX:389";
int rc = ldap_initialize(&ldap, uri.c_str());
    if (rc != LDAP_SUCCESS)
    {
        std::cerr << "ldap_initialize failed: " << ldap_err2string(rc) << std::endl;
        return rc;
    }

2.2: 协商ldap的版本

//这些都是固定参数,当然你也可用不协商使用ldap版本,亲测明文登录依旧可以增删改查
int version = LDAP_VERSION3
rc = ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, &version);
    if (rc != LDAP_SUCCESS)
    {
        std::cerr << "ldap_set_option failed: " << ldap_err2string(rc) << std::endl;
        return rc;
    }

2.3协商使用NTLM认证,明文登录不需要做

// 3.设置认证方式为NTLM,我不知道这是否有效,但是服务器却没有拒绝我
    int option = LDAP_OPT_X_SASL_MECH;
    const char *mech = "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值