接触ldap,可以说是从iRedMail开始,对这个的了解和认识也一点一点增加。
大家其实都知道通过LDAP可以实现身份统一验证,大家只需要记住一套的用户名和密码就可以。不过不同的软件实现的方式,会有很大的差异,我就把我了解,接触过的,总结一下。
1:php-ldap
现在开源的程序,php的很多,那么php的程序,如果让用户采用ldap的验证呢,其实他是需要php-ldap类似的模块,让php支持ldap,这样就可以实现直接去验证。
很多开源的web应用,如SguarCRM,WordPress,其实应该都是类似的方式。对于python,估计也是一样。
2:直接查询ldap
这个就以OpenVPN为例,实现OpenVPN的ldap验证,方式应该不少,我至少知道3种,这其实有时候让大家感觉很困惑的地方,为啥同一个功能,不同文章的做法不一样。
最省事的方式,就是让OpenVPN直接查询ldap,也就是通过OpenVPN的ldap插件来实现。现在centos和Ubuntu10.04,都已经提供现成的包,直接安装就可以,我已经成功实现。相关的文章,大家可以搜索howtoforge。
http://www.howtoforge.com/setting-up-an-openvpn-server-with-authentication-against-openldap-on-ubuntu-10.04-lts
http://www.howtoforge.com/using-iredmail-and-openvpn-for-virtual-email-hosting-and-vpn-services-centos-5.4
这个其实和邮件系统也是类似,很多人实现邮件系统和微软AD整合,需要安装很多别的软件,不过iRedMail实现的方式也是采用最简单的方式,直接设置Postfix,Dovecot去查询微软的ldap。
3:ldap schema
直接查询ldap,一般就只能返回用户名和密码是否正确,让用户使用。不过对于用户具备什么权限,就无法实现。通过LDAP的schema,就可以实现用户的权限的设置。
这个就PureFTP为例子,由于PureFTP提供schema,这样我们不但可以提供用户的统一验证,还可以在ldap上给用户设置权限。
如果你实现samba的ldap验证,其实也是类似,由于有samba的schema,所以你可以在ldap上设置你的权限。
4:PAM-ldap
PAM类似一个接口,例如ssh,他是通过pam来验证,那么我们可以通过pam-ldap来实现ldap的验证。Openvpn,其实也是支持pam验证,那么它也是可以通过这种方式实现ldap的验证。
5:Radius-ldap
这个是我这几天折腾的东西。其实OpenVPN还支持Radius,也就是说,你还可以通过Radius-ldap的方式,实现ldap验证。
我研究Radius,主要是希望解决无线网络使用ldap验证。这样看上去更加安全。
Radius,感觉有点类似pam,通过Radius,他也是可以实现mysql和ldap的验证。
很多路由器,AP,他们是没有ldap的验证选项,他就只能通过Radius来实现。
上次曾经看过,RouterOS是否支持ldap验证,后来看论坛,RouterOS支持Radius,所以你可以配置Radius采用ldap验证。
6:apache-ldap
这其实需要你的apache支持ldap,如果你是编译apache,需要你加入ldap的支持,如果是rpm,好像都是支持的。
iRedMail里的awstat,就是使用apache的ldap验证来实现的。你访问的时候,会跳出一个框,让你输入用户名和密码,他会查询ldap。
iRedMail里awstats 使用apache验证。
<Directory /var/www/awstats/>
DirectoryIndex awstats.pl
Options ExecCGI
order deny,allow
allow from all
#allow from 127.0.0.1
AuthName "Authorization Required"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
AuthLDAPUrl ldap://127.0.0.1:389/o=domainAdmins,dc=iredmail,dc=org?mail?sub?(&(objectclass=mailAdmin)(accountStatus=active))
AuthLDAPBindDN "cn=vmail,dc=iredmail,dc=org"
AuthLDAPBindPassword "password"
Require valid-user
相关文章
- ldap+flask+python2实现统一认证里面的那些编码神坑
- 【NumberValidators】工商营业执照号码和统一社会信用代码验证
- ASP.NET全栈开发验证模块之在MVC中使用服务端统一验证
- LDAP统一验证的理解
- SpringBoot2.0针对请求参数@RequestBody验证统一拦截
- Java验证LDAP用户,如何返回详细的错误信息
- ASP.NET Core如何添加统一模型验证处理机制详解
- ldap + kerberos + google authentication 实现两步验证
- 使用Active Directory / LDAP进行表单验证
- 如何使用c#在未加入Microsoft Active Directory中的域时对ldap进行身份验证