OpenLDAP的安装与基本使用方法(八)

在这篇文章中,我们把openldap作为认证模块,集成进httpd。

在Linux下,需要按安装httpdmod_ldap需要安装这两个包:

$ sudo dnf install -y httpd mod_ldap

我们可以确认在httpd目录中,mod_ldap已经被配置进来:

接下来我们要在httpdconf.d目录中配置好与LDAP的连接。可以在/etc/httpd/conf.d的目录里面创建一个myldap.conf文件。

$ touch /etc/httpd/conf.d/myldap.conf

文件的内容如下:

<Directory "/var/www/html">
  LogLevel debug
  AuthType Basic
  AuthName LDAP
  AuthBasicProvider ldap
  AuthLDAPURL ldap://127.0.0.1/ou=Users,dc=my-domain,dc=com?uid?sub?(objectClass=*)
  AuthUserFile /dev/null
  Require ldap-filter objectClass=inetOrgPerson
</Directory>

有关上面配置的具体含义,可以参考mod_ldap的文档。

上面配置的重点是这行:

AuthLDAPURL ldap://127.0.0.1/ou=Users,dc=my-domain,dc=com?uid?sub?(objectClass=*)

我们通过指定AuthLDAPURL,这样ou=Users下的用户就可以用来登录httpd中的应用。我们在ou=Users下已经有一条用户数据就是uid=weli,接下来需要做的是为这个用户配置一个密码:

$ ldappasswd -h localhost -x -D 'cn=Manager,dc=my-domain,dc=com' -w secret -s weli123 'uid=weli,ou=Users,dc=my-domain,dc=com'

如上所示,我们使用ldappasswd来为用户设置密码,密码为weli123。接下来我们可以用ldapsearch做下查询,看看这条用户数据:

$ ldapsearch -h localhost -LLL -x -D 'cn=Manager,dc=my-domain,dc=com' -w secret -b 'dc=my-domain,dc=com' 'uid=weli'
dn: uid=weli,ou=Users,dc=my-domain,dc=com
ou: Users
uid: weli
cn: Weinan Li
sn: Weinan
givenName: Weinan
title: Software Engineer
description: Systems Integration and IT for Example.Com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword:: e1NTSEF9S3A1ay9GdkVkMGs0bzdCVEpIam0weVlZKzIyVzE3Q1M=

可以看到用户的密码被保存在了userPassword当中,并且是加密过的。接下来我们启动httpd服务器:

$ sudo service httpd start
Redirecting to /bin/systemctl start  httpd.service

然后试着访问服务:

可以看到httpd服务让我们输入用户名和密码。我们输入ldap中的用户信息,就可以登录了:

如果用户名或密码错误,则可以在httpd的日志中看到认证错误信息:

$ sudo service httpd start
Redirecting to /bin/systemctl start  httpd.service
$ cd /etc/httpd/logs
$ tail -n 1 error_log 
[Sat Feb 17 13:24:28.733749 2018] [auth_basic:error] [pid 15905] [client 127.0.0.1:41596] AH01618: user wewerew not found: /

以上就是httpd集成ldap的基本配置方法。

总结

至此,对openldap的使用分析告一段落。

My Github Page: https://github.com/liweinan

Powered by Jekyll and Theme by solid

If you have any question want to ask or find bugs regarding with my blog posts, please report it here:
https://github.com/liweinan/liweinan.github.io/issues