phpcms首页如加上用户登入的音信,5上设置OpenLDAP并配备LDAP方式用户登6

By admin in 美高梅手机版4858 on 2019年4月21日

一、需求
    1.属性隐藏

在CentOS六.伍上设置OpenLDAP并安顿LDAP格局用户登陆

1.设置PHP和apache 假若未有EPEL的源必要安装下 yum install epel-release
若未有下载下来,就成立/etc/yum.repo.d/epel.repo


[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

phpldapadmin依赖apache和php
yum install php httpd 配置httpd.conf
2.安装OpenLDAP yum install *openldap* openldap openldap-servers
openldap-clients 配置OpenLDAP,配置文件/etc/openldap/slapd.conf
该文件暗中同意没有,从/usr/share/openldap-servers/slapd.conf.obsolete拷贝一份到该职位
owner为ldap:ldap


database monitor
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.exact="cn=Manager,dc=iflyyun,dc=cn" read
by * none database bdb
suffix "dc=iflyyun,dc=cn"
checkpoint 1024 15
rootdn "cn=Manager,dc=iflyyun,dc=cn"

配置/etc/openldap/ldap.conf


BASE dc=iflyyun,dc=cn
URI ldap://bja-pro0002.hadoop.cpcc.iflyyun.cn


配备ldap管理员用户密码
sldappasswd(注意不要用ldappasswd,不然会报GSSAPI错误)
输入密码,获得{SSHA}ph+VRzfWSeamboy0itVlazrJrxzVHh80格式的密码再修改/etc/openldap/slapd.conf
直接行使公开密码,使用加密密码有点难点 配置apache识别index.php
修改/etc/httpd/conf/httpd.conf 找到上边那1行,增加index.php
DirectoryIndex index.html index.html.var index.php
修改/etc/httpd/conf.d/php.conf 测试OpenLDAP配置文件是还是不是准确: slaptest
-u -f /etc/openldap/slapd.conf
3.安装phpldapadmin yum install phpldapadmin
配置/etc/phpldapadmin/config.ini


$servers->setValue(‘server’,’host’,’192.168.51.211′);
$servers->setValue(‘server’,’port’,389);
美高梅手机版4858,$servers->setValue(‘server’,’base’,array(‘dc=iflyyun,dc=cn’));
$servers->setValue(‘login’,’auth_type’,’cookie’);
$servers->setValue(‘login’,’bind_id’,’cn=Manager,dc=iflyyun,dc=cn’);
$servers->setValue(‘login’,’attr’,’dn’);(3九7行,那行撤除注释)
//
$servers->setValue(‘login’,’attr’,’uid’);(将那行注释掉,不然登入会报错)


修改/etc/httpd/conf.d/phpldapadmin.conf,允许从别的机器访问


Order Deny,Allow
Allow from all


4.phpldapadmin配置 删除/etc/openldap/lapd.d/目录下的有所文件
创制LDAP根目录 ldapadd -x -D”cn=Manager,dc=iflyyun,dc=cn” -f base.ldif
-W base.ldif


dn: dc=iflyyun,dc=cn
o: ldap
objectclass: dcObject
objectclass: organization


制造管理员用户 # Manager, iflyyun.cn
dn: cn=Manager,dc=iflyyun,dc=cn
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: Manager
description: LDAP administrator
5.LDAP客户端配置 安装必备软件 yum install nss-pam-ldapd pam_ldap
openldap-clients 必要修改的铺排文件有:
/etc/sysconfig/authconfig、/etc/pam.d/system-auth、/etc/openldap/ldap.conf、/etc/nssswitch.conf
修改/etc/sysconfig/authconfig


IPADOMAINJOINED=no
USEMKHOMEDIR=yes
USEPAMACCESS=no
CACHECREDENTIALS=yes
USESSSDAUTH=no
USESHADOW=yes
USEWINBIND=no
USEDB=no FORCELEGACY=no
USEFPRINTD=yes
FORCESMARTCARD=no
PASSWDALGORITHM=yes
USELDAPAUTH=yes
USEPASSWDQC=no
IPAV2NONTP=no
USELOCAUTHORIZE=yes
USECRACKLIB=yes
USEIPAV2=no
USEWINBINDAUTH=no
USESMARTCARD=no
USELDAP=yes
USENIS=no
USEKERBEROS=no
USESYSNETAUTH=yes
USESSSD=no
USEHESIOD=no

修改/etc/pam.d/system-auth


#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_ldap.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
account required pam_ldap.so

password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok md5
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_ldap.so

修改/etc/openldap/ldap.conf


#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never

TLS_CACERTDIR /etc/openldap/cacerts

BASE dc=iflyyun,dc=cn
URI ldap://hfa-pro0002.hadoop.cpcc.iflyyun.cn


修改/etc/nssswitch.conf


#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Valid entries include:
#
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis

passwd: files ldap
shadow: files ldap
group: files ldap

#hosts: db files nisplus nis dns
hosts: files dns

# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files

netgroup: nisplus

publickey: nisplus

automount: files nisplus
aliases: files nisplus

展开名称缓存服务 service nscd restart

壹.安装PHP和apache 假使未有EPEL的源必要设置下 yum install epel-release
若未有下载下来,就创办/e…

壹、yum安装相关软件及打算条件

yum -y install openldap* db4 migrationtools

service iptables stop

service NetworkManager stop

chkconfig iptables off

chkconfig NetworkManager off

那里为了便利关闭了防火墙,实际生育条件请留意!

请看成效图

       只展现用户名,部门(因为是单OU设计为了做区分),登录密码

二、配置openldap

cd /var/lib/ldap

slapd(一定要实行该命令,以变化相关配置文件)

chown ldap:ldap /var/lib/ldap/*

cp /usr/share/openldap-servers/DB_CONFIG.example
/var/lib/ldap/DB_CONFIG

phpcms首页如加上用户登入的音信,5上设置OpenLDAP并配备LDAP方式用户登6。service slapd restart

关于slapd.conf该配置文件,有时安装完成后可能未有,须求编写制定导入
—>> 下载地址

然后将slapd.conf放置/etc/openldap下

变化管理员密码,并且保留好

slappasswd –h {SSHA} –s redhat(此处的redhat正是密码,能够随便改造)

扭转的结果注意保留好!

美高梅手机版4858 1

    二.属性顺序展现

3、编辑配置文件slapd.conf

database bdb

suffix “dc=example,dc=com”   
#更改成团结的域名,比方:dc=test,dc=com#

rootdn “cn=Manager,dc=example,dc=com”  
#变动管理员名称及域名,举个例子:cn=admin,dc=test,dc=com#

rootpw此处所写的正是上一步所产生的加密密码#定义LDAP根管理员的密码(强烈提出使用加密的密码)rootpw与加密密码之间最棒用按TAB键分隔

除去原先配置

rm  -rf  /etc/openldap/slapd.d/*

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

chown -R ldap.ldap slapd.d/

service slapd restart

cd /etc/openldap

vi base.ldif  内容如下:

美高梅手机版4858 2

将dc=test,dc=com修改为和睦其实要用的,然后实践

ldapadd  -f base.ldif  -x -D  cn=admin,dc=test,dc=com –w
[那边填写ldap管理员admin密码]

下一场重启服务

service slapd restart

自个儿用的是cookie的不2秘籍,请先开采discuz的文件

          部门>用户名>登入密码

四、配置服务开机运行

chkconfig slapd on        # ldap服务(5.4为ldap)现在改为了slapd

chkconfig rsyslog on     #rsyslog服务(日志)5.4为syslog

chkconfig rpcbind on     #启动rpcbind服务5.4为portmap 111端口

\source\function\function_member.php

    三.运用UID能够登录

五、安装phpldapadmin

yum -y install epel-release

yum -y install httpd php php-bcmath php-gd php-mbstring php-xml
php-ldap

yum -y install phpldapadmin

vim /etc/httpd/conf.d/phpldapadmin.conf

增多上本身供给拜访web端的网段,作者在那边是剔除了Deny from
all,加多了Allow from all,实验阶段方便而已,实际生产条件还是要专注!

vi /etc/phpldapadmin/config.php

修改前:

// $servers->setValue(‘login’,’attr’,’dn’);

$servers->setValue(‘login’,’attr’,’uid’);

修改后:

$servers->setValue(‘login’,’attr’,’dn’);

//$servers->setValue(‘login’,’attr’,’uid’);

保存退出

service httpd restart

找到函数function setloginstatus()

          用户能够接纳账户(本身的名字)登陆WEB分界面

陆、访问测试

开发浏览器输入

用户名:cn=admin,dc=test,dc=om

密码:填写在此之前安装的密码(写原来的书文,不要填写加密后的密码)

把以下的代码

    肆.隐形登六后LOGO标记

  1. dsetcookie(‘auth’, authcode(“{$member[‘password’]}\t{$member[‘uid’]}”, ‘ENCODE’), $cookietime, 1, true);  
  2.     dsetcookie(‘loginuser’);  

    伍.潜藏左边开关

变为:

贰、功用完结

 

#在文件夹里面页面详细的情况.jpg能够看看成效

 

    壹.得以完成的效用

  1. dsetcookie(‘auth’, authcode(“{$member[‘password’]}\t{$member[‘uid’]}”, ‘ENCODE’), $cookietime, 1, true);  
  2.     dsetcookie(‘loginuser’,$_G[‘username’]);  

          #在配备文件中(/etc/phpldapadmin/config.php)做如下修改

在首页我们能够那里做:

      属性隐藏设置                                                     
                                                                       
                          #原则性贰1七行 找到这一条数据 =>
$config->custom->appearance[‘hide_attrs’] = array();

          #例子:
                     $config->custom->appearance[‘hide_attrs’]
= array(‘objectClass’,’sn’,’cn’,’uid’);

 

                        #隐藏 objectClass,sn,cn,uid属性

{if $_COOKIE['fgiC_2132_auth']}  
        <li  class="header_link" style="margin-left: 10px;"><a href="{siteurl()}bbs/home.php?mod=space" target="_blank">欢迎,{$_COOKIE['fgiC_2132_loginuser']}</a>  
        </li>  

        <li  class="header_link">|<a href="{siteurl()}bbs/member.php?mod=logging&action=logoff">退出</a></li>  
        {else}  
         <li class="reg_ico"></li>  
        <li class="header_link"><a href="{siteurl()}bbs/member.php?mod=register">注册</a></li>  
        <li class="login_ico"></li>  
        <li class="header_link"><a href="{siteurl()}bbs/member.php?mod=logging&action=login">登录</a></li>  
        {/if}  

      属性顺序呈现                                                     
                                                                       
                          #定位二陆五行 找到这一条数据 =>
$config->custom->appearance[‘attr_display_order’] = array();

  

          #例子:

瞩目那里的cookie

                   
 $config->custom->appearance[‘attr_display_order’] = array(

 

                       ‘givenName’,
                       ‘sn’,
                       ‘cn’,
                       ‘uid’,
                       ‘uidNumber’,
                       ‘userPassword’

  1. {if $_COOKIE[‘fgiC_2132_auth’]}  

                       );

哪怕地方的

      使用名字能够登录                                                 
                                                                       
                         #原则性41四行 找到这一条数据 =>
#$servers->setValue(‘login’,’fallback_dn’,false); false改为true

dsetcookie(‘auth’,
authcode(“{$member[‘password’]}\t{$member[‘uid’]}”, ‘ENCODE’),
$cookietime, 1, true);

                     $servers->setValue(‘login’,’attr’,’dn’);
                     $servers->setValue(‘login’,’attr’,’uid’);

作者们那里推断假诺存在那么些值就显得出登陆的用户名相关的音讯,未有的话就显示出登六分界面

                        #保险那两行不被讲明掉

      超时时间
                     $servers->setValue(‘login’,’timeout’,30);

 

                        #实际时刻友好安装

  1. {$_COOKIE[‘fgiC_2132_loginuser’]  

      关闭无名登陆开关
                   
 #$servers->setValue(‘login’,’anon_bind’,true);

 

                        #false改为true

意味着的是用户名,就是地点的

      登陆分界面LOGO隐藏掉                                               
                                                                       
                 
 #在/usr/share/phpldapadmin/htdocs/welcome.php里面修改
注释掉第三陆行新闻就足以了

 

      隐藏页眉页脚                                                     
                                                                       
                        #搜求关键字minimalMode 找到这一条数据 =>
$config->custom->appearance[‘minimalMode’] = true;
false改为true

  1. dsetcookie(‘loginuser’,$_G[‘username’]);  

二.失效作用

到此地,大家着力就成功了,不过退出怎么办吗?展开文件source\class\class_member.php找到函数function
on_logout()系统暗中同意的正是其壹用户退出函数,可是请看那些函数中有3个论断语句

     #沉痛警告:开启用户只可以开到自身的条文,就不能够使用UID登录了

 

 

  1. if($_GET[‘formhash’] != $_G[‘formhash’]) {  
  2.             showmessage(‘logout_succeed’, dreferer(), array(‘formhash’ => FORMHASH, ‘ucsynlogout’ => $ucsynlogout));  
  3.         }  

而大家壹会要做的连日中是尚未formhash那一个值的,所以我们要新写多少个脱离函数如下:

 

//add by jiang in order to logut in the home page  
        function on_logoff(){  
                global $_G;  

        $ucsynlogout = $this->setting['allowsynlogin'] ? uc_user_synlogout() : '';  
        clearcookies();  
        $_G['groupid'] = $_G['member']['groupid'] = 7;  
        $_G['uid'] = $_G['member']['uid'] = 0;  
        $_G['username'] = $_G['member']['username'] = $_G['member']['password'] = '';  
        $_G['setting']['styleid'] = $this->setting['styleid'];  

        showmessage('logout_succeed', dreferer(), array('formhash' => FORMHASH, 'ucsynlogout' => $ucsynlogout));  

        }  

  

对待一下大家就足以了然,新写的脱离函数只是少了上边的判别语句而以大家在phpcms做的首页中投入剥离按键:

 

  1. <a href=”{siteurl()}bbs/member.php?mod=logging&action=logoff”>退出</a>  

那么到那里是或不是变成了呢?大家回来首页来点击一下会发觉提示未有定义操作logoff解决的诀假诺:文件source\module\member\member_logging.php找到

 

  1. if(!in_array($_GET[‘action’], array(‘login’, ‘logout’,’logoff’))) {  
  2. showmessage(‘undefined_action’);  
  3. }  

在array那里就新增的logoff,那时再去点就向来不提示了

so

done!

 

 

转自:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有