Wangyajie_001 2018-09-06 15:08 采纳率: 0%
浏览 938
已结题

pam_ldap用户认证过程中如何释放TCP连接

服务器采用pam_ldap认证 体系,采用open_ldap2.4.x,认证机制是通过前端调用pam认证的do_pam_authenication()函数【进行用户身份验证,普通用户和ldap用户都会进入这个函数,这个函数没有ldap用户操作的句柄LDAP* ld】,*然后函数直接跳转到
ldap的认证函数ldap_sm_authenication【用于ldap用户认证,里面定义了 LDAP* ld*主要进行ldap用户的认证】,在其中调用了Openldap的ldap_simple_bind_s()进行服务器绑定,ldap_simple_bind_s()调用ldap_initialize()进行和ldap服务器建立连接,然后进行用户身份认证,认证完成后返回ldap_success【0】表示成功认证,设置之后采用ldap用户可以正常访问,但是用户登录登出之后会多建立一个登录页面网址到ldap服务器之间的一个tcp连接,这个连接不会超时,直到重启登录认证的服务器。
我配置过了ldap登录认证的超时方式,在ldap_initialize()之后ldap_simple_bind_s()之前进行了超时机制设置:ldap_set_option(ld, LDAP_OPT_TIMELIMIT,&timeout),ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT,&timeout),
最后发现在pam_sm_authenication()函数中调用ldap_simple_bind_s()之后return之前没有进行ldap_unbind(ld),由于pam_sm_authenication()在调用之后就返回了pam认证,也就是说,pam_sm_authenication() return之后函数执行过程就不会再有LDAP ld 这种类型,我在*pam_sm_authenication() return之前进行了ldap_unbind(),结果发现ldap登录出现问题,提示网络或服务器异常,代码日志发现程序执行停在了我设置ldap_unbind()的地方。**
我想知道pam_ldap认证过程中当用户名、密码认证成功之后他的LDAP *ld 句柄什么时候释放,ldap_unbind()什么时候调用(如果必须要调用的话),还有最重要的一点:LDAP服务器和登录网站建立的TCP连接什么时候应该释放掉

  • 写回答

1条回答 默认 最新

  • devmiao 2018-09-08 15:52
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名