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

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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)