Chinaunix首页 | 论坛 | 博客
  • 博客访问: 857407
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: LINUX

2011-04-06 11:11:16

基于OpenLDAP集中认证架构文档

本文档只讲述OpenLDAP具体应用,不阐述LDAP协议及原理,有兴趣可以自己参阅相关资料。OpenLDAP是基于服务端和客户端模式的,下面分两部分逐步介绍服务端和客户端的配置。

PS(阅读本文需要一些基本linux知识,yum配置,vim编辑器使用,linux系统服务配置,并且对ldap目录服务有个基本的了解。)

一,OpenLDAP服务端配置(基于linux平台)

1,安装软件:httpdopenldap-serversopenldapphpldapadmin(不建议使用,使用ldapadmin更好)

phpldapadmin rpm包从 下载

将系统iso镜像配置进yum软件仓库

yum install openldap openldap-servers -y

yum install phpldapadmin-1.0.1-1.el5.noarch.rpm -y --nogpgcheck

这样会自动安装一些关联的软件。

2,相关配置文件:

vim编辑/etc/openldap/slapd.conf,

找到suffixrootdnrootpw关键词

分配配置为:

suffix         "dc=example,dc=com"

rootdn          "cn=root,dc=example,dc=com"

rootpw          secret

添加以下访问授权到文档中的任意位置

access to attrs=shadowLastChange,userPassword

      by self write

      by * auth

access to *

      by * read

拷贝数据库配置文件到/var/lib/ldap目录,并将目录拥有者()改为ldap用户()

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

chown -R ldap:ldap /var/lib/ldap

编辑/etc/httpd/conf.d/phpldapadmin.conf

127.0.0.1 修改为all这样其他自己也可以访问。

编辑/etc/phpldapadmin/config.php,修改以下行,并添加相对应ldap信息。

$ldapservers->SetValue($i,'server','name','My LDAP Server');

$ldapservers->SetValue($i,'server','host','127.0.0.1');

$ldapservers->SetValue($i,'server','port','389');

$ldapservers->SetValue($i,'server','base',array('dc=example,dc=com'));

$ldapservers->SetValue($i,'server','auth_type','cookie');

$ldapservers->SetValue($i,'login','pass','secret')

这样就可以通过phpldapadmin,修改配置ldap服务器。

3,启动相关服务并添加开机启动项目

service httpd start

service ldap start

chkconfig httpd on

chkconfig ldap on

4,导入账号信息:

用浏览器浏览   IPldap服务器的IP地址

Login DNcn=root,dc=example,dc=com

Passwordsecret

这样就可以登录LDAP服务器

点击import导入账号数据,数据内容见附件1(各项数据的相关含义,请参考相关文档)

数据导入后,就可以供客户端查询,下面讲述客户端的配置。

5,使用工具修改账号信息ldapadmin(运行于windows平台)

系统权限设置是每个人,可以修改自己的密码,提供匿名查询。

ldap的root账号可以修改所有人的密码,系统root账号可以修改root的密码。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

二,客户端配置(login,sshd,vsftpd,svn,dotproject,mantis,testlink,mediawiki)

1, login,sshd,vsftpd服务都是通过pam插入的,设置比较简单,

运行:authconfig-tui,再弹出的画面中,

第一列,选择User LDAP

第二列,选择Use Shadow PasswordsUse LDAP AuthenticationLocalauthorization is sufficient

选择next 按回车,第二个画面中 Use TLS不选

Server填上 ########备注,10.141.26.67,请更换成LDAP服务器IP地址。

Base DN填上 dc=exampledc=com

选择OK,按回车。

        yum install vsftpd –y

        编辑/etc/pam.d/vsftpd,内容改成如下:

auth        sufficient    pam_ldap.so

account     [default=bad success=ok user_unknown=ignore] pam_ldap.so

password   sufficient    pam_ldap.so use_authtok

session     optional      pam_ldap.so

重新启动下sshd,vsftpd这样就可以使用ldap里面的账号登录了。

        2,svn,是居于httpd的,所以需要安装一些http模块

        yum install mod_dav_svn subversion httpd php-ldap mysql-server openldap-clients php php-mysql mod_authz_ldap php-gd -y

        编辑/etc/php.ini将里面的session.auto_start = 0 改为session.auto_start = 1

/etc/httpd/conf.d/subversion.con修改为如下内容

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

   DAV svn

   SVNParentPath /var/www/svn

   SVNListParentPath on

      # Require SSL connection for password protection.

AuthType Basic

AuthBasicProvider ldap

AuthName "SVN login"

AuthzLDAPAuthoritative off

AuthLDAPURL ldap://10.141.26.67/ou=People,dc=example,dc=com#记得改成ldap服务器的IPD地址

Require valid-user

        # SSLRequireSSL

mkdir /var/www/svn

cd /var/www/svn

svnadmin create stuff

chown -R apache:apache stuff # 创建stuff源码仓库。

重启httpd就可以在浏览器中访问,会要求账号密码,输入在ldap中存在的账号密码就可以。

3dotproject(版本2.1.2)是所有当中最简单的,直接在网页上点点就可以了。

service mysqld start #dotproject,testlink,mantis都使用到mysql数据库。

chkconfig mysqld on

dotproject,mantis,testlink,mediawiki的安装都是从网上下载相关文档后,解压到/var/www/html目录,从浏览器从进入各自的目录,开始安装,安装比较简单,也不属于本文讲解范围,不多讲述(附件2有相关链接)。注意安装时候要有写的权限,否则安装无法继续。

安装完成之后,使用admin@passwd登录dotprojectsystem admin里面的system configuration,设置以下选项

User Authentication Method LDAP

LDAP HOST 设置为ldap服务器IP地址

LDAP PORT 设置为389

LDAP VERSION 设置为3

LDAP BASE DN 设置为dc=example,dc=com

LDAP User Filter 设置为(uid=%USERNAME%)

LDAP Search User 设置为

LDAP Search User Password 设置为

LDAP also allows standard login 打钩。

都设置完后,点右下角保存,这样就能使用ldap中的账号登录了。

4mantis(1.1.5)testlink(1.7.5)设置是一样的,都需要在各自数据库中有账号才能使用ldap验证,不然在发送验证账号时候,使用administrator账号。

安装完成后需要先使用各自的管理账号,进去添加个ldap中存在的账号(例如test1)为管理员账号后(testlink注意要active),再按照如下步骤修改成LDAP验证,这样LDAP账号中就有一个管理账号。

mantis默认管理员账号administrator密码是root

testlink默认管理员账号admin密码是admin

mantis 部分,编辑mantis目录下的config_defaults_inc.php

$g_login_method 的值修改为LDAP

$g_ldap_server                  = ‘’;ldap服务器IP地址

$g_ldap_port                    = '389';

$g_ldap_root_dn                 = 'dc=example,dc=com';

$g_ldap_organization    = '';

$g_ldap_uid_field               = 'uid';

$g_ldap_bind_dn                 = '';

$g_ldap_bind_passwd             = '';

$g_use_ldap_email               = OFF;

$g_ldap_protocol_version = '3';

Testlink部分,编辑testlink目录下的config.inc.php文件,

$tlCfg->authentication['method'] = 'LDAP';

/** LDAP authentication credentials */

$tlCfg->authentication['ldap_server']        = '10.141.26.67';#ldap服务器IP

$tlCfg->authentication['ldap_port']                     = '389';

$tlCfg->authentication['ldap_version']          = '3'; // could be '2' in some cases

$tlCfg->authentication['ldap_root_dn']          = 'dc=example,dc=com';

$tlCfg->authentication['ldap_organization']     = '';    // e.g. '(organizationname=*Traffic)'

$tlCfg->authentication['ldap_uid_field']        = 'uid'; // Use 'sAMAccountName' for Active Directory

$tlCfg->authentication['ldap_bind_dn']          = ''; // Left empty for anonymous LDAP binding

$tlCfg->authentication['ldap_bind_passwd']      = ''; // Left empty for anonymous LDAP binding

5.mediawiki(1.15.1),ldap插件版本为1.2a (beta)

安装完后,将ldap插件LdapAuthentication.php,放到mediawiki目录include

编辑mediawiki目录下的LocalSettings.php

在文中添加如下设置

require_once 'LdapAuthentication.php';

$wgAuth = new LdapAuthenticationPlugin();

$wgLDAPDomainNames = array(

'itssldap'

);

$wgLDAPServerNames = array(

'itssldap' => '10.141.26.67'###修改为ldap服务器IP地址或域名。

);

$wgLDAPSearchStrings = array(

'itssldap' => 'uid=USER-NAME,ou=People,dc=example,dc=com'

);

$wgLDAPEncryptionType = array(

'itssldap' => 'clear'

);

$wgMinimalPasswordLength = 1;

$wgLDAPWriterDN = array( "itssldap" => "cn=root,dc=example,dc=com" );

$wgLDAPWriterPassword = array( "itssldap" => "secret" ); // FIXME

$wgLDAPWriteLocation    = array( "itssldap" => "ou=People,dc=example,dc=com" );

$wgLDAPAddLDAPUsers = array( "itssldap" => true );

$wgLDAPUpdateLDAP = array( "itssldap" => true );

$wgLDAPUseLocal = array( "itssldap" => true );

$wgLDAPMailPassword = array( "itssldap" => true );

$wgLDAPRetrievePrefs = array( "itssldap" => true );

$wgLDAPDisableAutoCreate = array( "itssldap" => false );

wik里面注册,会同时更新到ldap服务器,通过Ldapadmin,给帐号添加poixaccount,就能访问vsftpd,login,sshd

附件1

dn: dc=example,dc=com

dc: example

objectClass: top

objectClass: domain

 

dn: ou=People,dc=example,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

 

dn: ou=Group,dc=example,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

 

dn: cn=ldapuser,ou=Group,dc=example,dc=com

objectClass: posixGroup

objectClass: top

cn: ldapuser

userPassword: {crypt}x

gidNumber: 500

 

dn: uid=ldapuser,ou=People,dc=example,dc=com

uid: ldapuser

cn: ldapuser

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword: {crypt}$1$XiWzbnAd$7j7VgKpgvvWEglr60jwzW0

shadowLastChange: 14552

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 500

gidNumber: 500

homeDirectory: /var/ftp

 

dn: uid=test1,ou=People,dc=example,dc=com

uid: test1

cn: test1

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

shadowLastChange: 14552

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 501

gidNumber: 500

homeDirectory: /var/ftp

userPassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=

 

dn: uid=test2,ou=People,dc=example,dc=com

uid: test2

cn: test2

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

shadowLastChange: 14552

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 501

gidNumber: 500

homeDirectory: /var/ftp

userPassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=

 

dn: uid=test3,ou=People,dc=example,dc=com

uid: test3

cn: test3

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword: {crypt}$1$XiWzbnAd$7j7VgKpgvvWEglr60jwzW0

shadowLastChange: 14552

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 501

gidNumber: 500

homeDirectory: /var/ftp

阅读(1206) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~