網(wǎng)上有很多關(guān)于如何搭建pos機(jī),從0搭建LDAP統(tǒng)一認(rèn)證服務(wù)的知識(shí),也有很多人為大家解答關(guān)于如何搭建pos機(jī)的問題,今天pos機(jī)之家(m.dsth100338.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
如何搭建pos機(jī)
OpenLDAP + phpldapadmin + nginx 搭建部署教程(完整版)
1.什么是LDAPLDAP是輕量目錄訪問協(xié)議(LightweightDirectory Access Protocol),LDAP標(biāo)準(zhǔn)實(shí)際上是在X.500標(biāo)準(zhǔn)基礎(chǔ)上產(chǎn)生的一個(gè)簡(jiǎn)化版本,可以根據(jù)需要定制。LDAP 服務(wù)器本質(zhì)上是一個(gè)為只讀訪問而優(yōu)化的非關(guān)系型數(shù)據(jù)庫。OpenLDAP 是 LDAP 協(xié)議的一個(gè)開源實(shí)現(xiàn)。提供了目錄服務(wù)的所有功能,包括目錄搜索、身份認(rèn)證、安全通道、過濾器等等。大多數(shù)的 Linux 發(fā)行版里面都帶有 OpenLDAP 的安裝包。OpenLDAP 服務(wù)默認(rèn)使用非加密的 TCP/IP 協(xié)議來接收服務(wù)的請(qǐng)求,并將查詢結(jié)果傳回到客戶端。由于大多數(shù)目錄服務(wù)都是用于系統(tǒng)的安全認(rèn)證部分比如:用戶登錄和身份驗(yàn)證,所以它也支持使用基于 SSL/TLS 的加密協(xié)議來保證數(shù)據(jù)傳送的保密性和完整性。OpenLDAP 是使用 OpenSSL 來實(shí)現(xiàn) SSL/TLS 加密通信的。(摘自https://www.cnblogs.com/kevingrace/p/5773974.html)OpenLDAP主要用作對(duì)各種服務(wù)訪問做后臺(tái)認(rèn)證以及用戶數(shù)據(jù)權(quán)限管控。(例如,訪問 Samba 時(shí),LDAP 可以起到域控制器的作用;或者 Linux 系統(tǒng)認(rèn)證 時(shí)代替 /etc/passwd 的作用。)
DAP特點(diǎn)
LDAP的結(jié)構(gòu)用樹來表示,而不是用表格。正因?yàn)檫@樣,就不能用SQL語句了LDAP可以很快地得到查詢結(jié)果,不過在寫方面,就慢得多LDAP提供了靜態(tài)數(shù)據(jù)的快速查詢方式:Client/Server模型,Server 用于存儲(chǔ)數(shù),Client提供操作目錄信息樹的工具,這些工具可以將數(shù)據(jù)庫的內(nèi)容以文本格式(LDAP 數(shù)據(jù)交換格式,LDIF)呈現(xiàn)在您的面前LDAP是一種開放Internet標(biāo)準(zhǔn),LDAP協(xié)議是跨平臺(tái)的的Interent協(xié)議它是基于X.500標(biāo)準(zhǔn)的,與X.500不同,LDAP支持TCP/IP(即可以分布式部署)LDAP中提供三種身份認(rèn)證機(jī)制
匿名?;菊J(rèn)證:通過用戶名和密碼進(jìn)行身份識(shí)別,又分為簡(jiǎn)單密碼和MD5密碼認(rèn)證LDAP提供的在SSL和TLS安全通道基礎(chǔ)上進(jìn)行的身份認(rèn)證,包括數(shù)字證書的認(rèn)證。LDAP端口號(hào):389,636389 明文端口636 加密端口 (SSL/TLS)
LDAP目錄數(shù)據(jù)結(jié)構(gòu)
在LDAP中目錄是按照樹型結(jié)構(gòu)組織——目錄信息樹(DIT) ,DIT是一個(gè)主要進(jìn)行讀操作的數(shù)據(jù)庫DIT由條目(Entry)組成,條目相當(dāng)于關(guān)系數(shù)據(jù)庫中表的記錄;條目是具有分辨名DN(Distinguished Name)的屬性-值對(duì)(Attribute-value,簡(jiǎn)稱AV)的集合在目錄樹中怎么組織數(shù)據(jù)cn=Fran Smith,ou=employees,dc=foobar,dc=com
在UNIX文件系統(tǒng)中,最頂層是根目錄(root),LDAP目錄也通常用ROOT做根,通常稱為BaseDN因?yàn)闅v史(X.500)的原因,LDAP目錄用ou(Organization Unit)從邏輯上把數(shù)據(jù)分開來。ou 也是一種條目,容器條目ou下就是真正的用戶條目2.LDAP基本概念2.1 Entry條目,也叫記錄項(xiàng),是LDAP中最基本的顆粒,就像字典中的詞條,或者是數(shù)據(jù)庫中的記錄。通常對(duì)LDAP的添加、刪除、更改、檢索都是以條目為基本對(duì)象的。
dn:每一個(gè)條目都有一個(gè)唯一的標(biāo)識(shí)名(distinguished Name ,DN),如上圖中一個(gè) dn:"cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org" 。通過DN的層次型語法結(jié)構(gòu),可以方便地表示出條目在LDAP樹中的位置,通常用于檢索。rdn:一般指dn逗號(hào)最左邊的部分,如cn=baby。它與RootDN不同,RootDN通常與RootPW同時(shí)出現(xiàn),特指管理LDAP中信息的最高權(quán)限用戶。Base DN:LDAP目錄樹的最頂部就是根,也就是所謂的“Base DN",如"dc=mydomain,dc=org"。補(bǔ)充:常見的兩種DN設(shè)置:dn格式就是“cn=Tom,ou=employees,dc=admin,dc=com”
基于cn(姓名)
cn=test,ou=auth,dc=baike,dc=com ,最常見的cn是/etc/group轉(zhuǎn)來的條目
基于uid(User ID)
uid=test, ou=auth,dc=baike,dc=com 最常見的cn是/etc/group轉(zhuǎn)來的條目
2.2 Schema對(duì)象類(ObjectClass)、屬性類型(AttributeType)、語法(Syntax)分別約定了條目、屬性、值,他們之間的關(guān)系如下圖所示。所以這些構(gòu)成了模式(schema)——對(duì)象類的集合。條目數(shù)據(jù)在導(dǎo)入時(shí)通常需要接受模式檢查,它確保了目錄中所有的條目數(shù)據(jù)結(jié)構(gòu)都是一致的。schema(一般在/etc/ldap/schema/目錄)在導(dǎo)入時(shí)要注意前后順序。在LDAP中,schema用來指定一個(gè)目錄中所包含的對(duì)象(objects)的類型(objectClass),以及每一個(gè)類型(objectClass)中必須提供的屬性(Atrribute)和可選的屬性??蓪chema理解為面向?qū)ο蟪绦蛟O(shè)計(jì)中的類,通過類定義一個(gè)具體的對(duì)象。LDIF中的數(shù)據(jù)條目可理解為是一個(gè)具體的對(duì)象,是通過schema來規(guī)劃創(chuàng)建的。因此,schema是一個(gè)數(shù)據(jù)模型,用來決定數(shù)據(jù)按什么方式存儲(chǔ),并定義存儲(chǔ)在不同的條目(Entry)下的數(shù)據(jù)之間的關(guān)系。schema需要在主配置文件slapd.conf中指定,以用來決定在目錄中可以使用哪些objectClass。2.3 objectClass(對(duì)象類)LDAP中,一個(gè)條目必須包含一個(gè)objectClass屬性,且需要賦予至少一個(gè)值。每一個(gè)值將用作一條LDAP條目進(jìn)行數(shù)據(jù)存儲(chǔ)的模板;模板中包含了一個(gè)條目必須被賦值的屬性和可選的屬性。objectClass有著嚴(yán)格的等級(jí)之分,最頂層是top和alias。例如,organizationalPerson這個(gè)objectClass就隸屬于person,而person又隸屬于top對(duì)象類有三種類型:結(jié)構(gòu)類型(Structural)、抽象類型(Abstract)和輔助類型(Auxiliary)。結(jié)構(gòu)類型是最基本的類型,它規(guī)定了對(duì)象實(shí)體的基本屬性,每個(gè)條目屬于且僅屬于一個(gè)結(jié)構(gòu)型對(duì)象類。抽象類型可以是結(jié)構(gòu)類型或其他抽象類型父類,它將對(duì)象屬性中共性的部分組織在一起,稱為其他類的模板,條目不能直接集成抽象型對(duì)象類。輔助類型規(guī)定了對(duì)象實(shí)體的擴(kuò)展屬性。每個(gè)條目至少有一個(gè)結(jié)構(gòu)性對(duì)象類。
結(jié)構(gòu)型(Structural):如person和organizationUnit;輔助型(Auxiliary):如extensibeObject;抽象型(Abstract):如top,抽象型的objectClass不能直接使用。2.4 Attribute(屬性)屬性(Attribute)類似于程序設(shè)計(jì)中的變量,可以被賦值。在OpenLDAP中聲明了許多常用的Attribute(用戶也可自己定義Attribute)。
每個(gè)條目都可以有很多屬性(Attribute),比如常見的人都有姓名、地址、電話等屬性。每個(gè)屬性都有名稱及對(duì)應(yīng)的值,屬性值可以有單個(gè)、多個(gè),比如你有多個(gè)郵箱。
屬性不是隨便定義的,需要符合一定的規(guī)則,而這個(gè)規(guī)則可以通過schema制定。比如,如果一個(gè)entry沒有包含在 inetorgperson 這個(gè) schema 中的objectClass: inetOrgPerson,那么就不能為它指定employeeNumber屬性,因?yàn)閑mployeeNumber是在inetOrgPerson中定義的。常見的Attribute含義如下:● c:國家?!?cn:common name,指一個(gè)對(duì)象的名字。如果指人,需要使用其全名。● dc:domain Component,常用來指一個(gè)域名的一部分?!?givenName:指一個(gè)人的名字,不能用來指姓?!?l:指一個(gè)地名,如一個(gè)城市或者其他地理區(qū)域的名字?!?mail:電子信箱地址?!?o:organizationName,指一個(gè)組織的名字?!?ou:organizationalUnitName,指一個(gè)組織單元的名字。● sn:surname,指一個(gè)人的姓?!?telephoneNumber:電話號(hào)碼,應(yīng)該帶有所在的國家的代碼?!?uid:userid,通常指某個(gè)用戶的登錄名,與Linux系統(tǒng)中用戶的uid不同。objectClass是一種特殊的Attribute,它包含其他用到的Attribute以及其自身。
3.安裝配置3.1.安裝包說明
安裝包名稱
說明
openldap
openldap服務(wù)端和客戶端必須用的庫文件
openldap-servers
用于啟動(dòng)服務(wù)和設(shè)置. 包含單獨(dú)的ldap后臺(tái)守護(hù)程序
openldap-clients
在LDAP服務(wù)端使用,用戶增刪改查的命令行環(huán)境
openldap-devel
devel包,可選擇進(jìn)行安裝
openldap-servers-sql
支持sql模塊,可進(jìn)行選擇性安裝
migrationtools
通過migrationtools實(shí)現(xiàn)OpenLDAP用戶及用戶組的添加,導(dǎo)入系統(tǒng)賬戶,可進(jìn)行選擇性安裝
compat-openldap
openldap兼容性庫
3.2.安裝配置安裝openldap參考OpenLDAP + phpLDAPadmin ,寫的簡(jiǎn)單明了,這里做一下搬運(yùn)工
yum install openldap openldap-clients openldap-servers -y yum install phpldapadmin -y
生成管理員密碼slappasswd -s Admin123
{SSHA}aAwdh+JnUunpTSLlIw/zQG3t6/rXNI58
修改olcDatabase={2}hdb.ldif文件 將生成的加密字符寫進(jìn)配置文件
vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
#修改olcSuffix: dc=rockstics,dc=comolcRootDN: cn=Manager,dc=rockstics,dc=com#添加olcRootPW: {SSHA}qtkKhiajMDZpbAS9sS9K4TfnePglsVz4
注意: 配置中dc=rockstics,dc=com 這種只是舉例,后面圖片或者配置中可能會(huì)出現(xiàn)不同的參數(shù),請(qǐng)根據(jù)自己的實(shí)際情況填寫,別照抄哦修改olcDatabase={1}monitor.ldif文件
vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=rockstics,dc=com" read by * none
驗(yàn)證配置slaptest -u
5f193b58 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"5f193b58 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"config file testing succeeded
配置數(shù)據(jù)庫
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap:ldap -R /var/lib/ldapchmod 700 -R /var/lib/ldap
啟動(dòng)slapd
systemctl start slapd
導(dǎo)入Schema
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
添加用戶和組
利用migrationtools 生成
yum install migrationtools -y 編輯migrate_common.ph 文件
vim /usr/share/migrationtools/migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "rockstics.com";$DEFAULT_BASE = "dc=rockstics,dc=com";$EXTENDED_SCHEMA = 1;
生成base.ldif 文件
mkdir /etc/openldap/slapd.d/custom_ldif/usr/share/migrationtools/migrate_base.pl > /etc/openldap/slapd.d/custom_ldif/base.ldifldapadd -x -D "cn=admin,dc=rockstics,dc=com" -W -f /etc/openldap/slapd.d/custom_ldif/base.ldif
4.集成phpLDAPadmin web頁面4.1 基于HTTPweb服務(wù)器配置(nginx 直接看4.2)安裝HTTP,PHP和 phpldapadmin, 基于nginx + php + phpldapadmin的配置請(qǐng)直接拉到后面查看yum install epel-releaseyum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml phpldapadmin
配置http:
vim /etc/httpd/conf.d/phpldapadmin.conf
## Web-based tool for managing LDAP servers#Alias /phpldapadmin /usr/share/phpldapadmin/htdocsAlias /ldapadmin /usr/share/phpldapadmin/htdocs<Directory /usr/share/phpldapadmin/htdocs><IfModule mod_authz_core.c># Apache 2.4Require all granted</IfModule><IfModule !mod_authz_core.c># Apache 2.2Order Deny,AllowDeny from allAllow from 192.168.119.123Allow from ::1</IfModule></Directory>
啟動(dòng)LDAP
systemctl start httpdsystemctl enable httpdsystemctl status httpd
登陸頁面即可看到(圖片是后面補(bǔ)的,創(chuàng)建用戶見 https://blog.csdn.net/rockstics/article/details/108061374):
4.2 基于nginx的web服務(wù)器配置關(guān)于如何安裝OpenLDAP與phpLDAPadmin在一個(gè)Nginx服務(wù)器,網(wǎng)上很難找到相關(guān)的配置,于是不得不FQ找到了下面的配置記錄之,
server {listen 80;server_name phpldapadmin.nausch.org;access_log /var/log/nginx/phpldapadmin_access.log;error_log /var/log/nginx/phpldapadmin_errors.log;root /usr/share/phpldapadmin/htdocs/;index index.php index.html;location ~ \\.php {fastcgi_split_path_info ^(.+\\.php)(/.+)$;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param script_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}
瀏覽器訪問 http://phpldapadmin.nausch.org如果無法訪問,請(qǐng)檢查php 版本配置,番外篇中有踩坑說明
番外篇1.slapd配置說明OpenLDAP 2.3和更高版本已過渡到使用動(dòng)態(tài)運(yùn)行時(shí)配置引擎slapd-config,具備以下特性:
完全啟用LDAP使用標(biāo)準(zhǔn)LDAP操作進(jìn)行管理將其配置數(shù)據(jù)存儲(chǔ)在 LDIF數(shù)據(jù)庫,通常位于/usr/local/etc/openldap/slapd.d目錄中。允許即時(shí)更改slapd的所有配置選項(xiàng),通常無需重新啟動(dòng)服務(wù)器即可使更改生效。本版本(slapd 2.4.44 )仍支持較早版本的slapd.conf 文件,但已棄用該文件,在將來的OpenLDAP版本中將不再支持該文件??梢酝ㄟ^slapd.conf 配置slapd,使用slaptest或任何slap工具將現(xiàn)有的slapd.conf 文件轉(zhuǎn)換為新格式slapd-config:
slaptest -f /usr/local/etc/openldap/slapd.conf -F /usr/local/etc/openldap/slapd.d
測(cè)試您是否可以使用上面配置的默認(rèn)rootdn和rootpw訪問cn = config下的條目:
ldapsearch -x -D cn = config -w VerySecret -b cn = config
注意:盡管slapd-config 系統(tǒng)將其配置存儲(chǔ)為(基于文本的)LDIF文件,但是您絕對(duì)不應(yīng)直接編輯任何LDIF文件。配置更改應(yīng)通過LDAP操作執(zhí)行,例如ldapadd ,ldapdelete或ldapmodify
2.踩坑說明Nginx配置后各種不成功,一直以為是nginx配置的問題(也是之前對(duì)nginx配置PHP 不熟的原因,于是又補(bǔ)了一下PHP的知識(shí),PHP中fastcgi和php-fpm是什么東西),后來想了下,可能是因?yàn)樽约喊惭b的openladp版本比較新和PHP版本不兼容的問題,yum 默認(rèn)安裝的php 版本為PHP 5.4.16,所以升級(jí)了PHP 相關(guān)所有的組件(Linux下PHP由5.6升級(jí)到7.2詳細(xì)教程)才成功(這里也有一個(gè)坑,升級(jí)的時(shí)候需要將之前PHP所有的組件卸載干凈了包括phpadmin,完美跳坑后終于成功)
phpldapadmin nginx配置文件參考2
server {server_name ldap01.linoxide.com;listen 80;# document rootroot /usr/share/nginx/www;index index.php index.html index.htm;# application: phpldapadminlocation /phpldapadmin {alias /usr/share/phpldapadmin/htdocs;index index.php index.html index.htm;}location ~ ^/phpldapadmin/.*\\.php$ {root /usr/share;if ($request_filename !~* htdocs) {rewrite ^/phpldapadmin(/.*)?$ /phpldapadmin/htdocs$1;}fastcgi_pass unix:/run/php/php7.0-fpm.sock; ##fastcgi_pass的另一種配置方式,相比于端口方式更高效fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename;include fastcgi_params;}# loggingerror_log /var/log/nginx/phpldapadmin.error.log;access_log /var/log/nginx/phpldapadmin.access.log;}
瀏覽器請(qǐng)求:http://ldap01.linoxide.com/phpldapadmin
5.LDAP常用命令說明ldapadd選項(xiàng):-x 進(jìn)行簡(jiǎn)單認(rèn)證-D 用來綁定服務(wù)器的DN-h 目錄服務(wù)的地址-w 綁定DN的密碼-f 使用ldif文件進(jìn)行條目添加的文件如:
ldapadd -x -D "cn=admin,dc=rockstics,dc=com" -W -f /etc/openldap/slapd.d/custom_ldif/base.ldifldapadd -Y EXTERNAL -H ldapi:/// -f add_olcOverlay.ldif
ldapmodify選項(xiàng)-a 添加新的條目.缺省的是修改存在的條目.-C 自動(dòng)追蹤引用.-c 出錯(cuò)后繼續(xù)執(zhí)行程序并不中止.缺省情況下出錯(cuò)的立即停止.-D binddn 指定搜索的用戶名(一般為一dn 值).-e 設(shè)置客戶端證書文件,例: -e cert/client.crt-E 設(shè)置客戶端證書私鑰文件,例: -E cert/client.key-f file 從文件內(nèi)讀取條目的修改信息而不是從標(biāo)準(zhǔn)輸入讀取.-H ldapuri 指定連接到服務(wù)器uri。常見格式為ldap://hostname:port-h ldaphost 指定要連接的主機(jī)的名稱/ip 地址.它和-p 一起使用.-p ldapport 指定要連接目錄服務(wù)器的端口號(hào).它和-h 一起使用.-M[M] 打開manage DSA IT 控制. -MM 把該控制設(shè)置為重要的.-n 用于調(diào)試到服務(wù)器的通訊.但并不實(shí)際執(zhí)行搜索.服務(wù)器關(guān)閉時(shí),返回錯(cuò)誤;服務(wù)器打開時(shí),常和-v 參數(shù)一起測(cè)試到服務(wù)器是否是一條通路.-v 運(yùn)行在詳細(xì)模塊.在標(biāo)準(zhǔn)輸出中打出一些比較詳細(xì)的信息.比如:連接到服務(wù)器的ip 地址和端口號(hào)等.-V 啟用證書認(rèn)證功能,目錄服務(wù)器使用客戶端證書進(jìn)行身份驗(yàn)證,必須與-ZZ 強(qiáng)制啟用TLS 方式配合使用,并且匿名綁定到目錄服務(wù)器.-W 指定了該參數(shù),系統(tǒng)將彈出一提示入用戶的密碼.它和-w 參數(shù)相對(duì)使用.-w bindpasswd 直接指定用戶的密碼. 它和-W 參數(shù)相對(duì)使用.-x 使用簡(jiǎn)單認(rèn)證.-Z[Z] 使用StartTLS 擴(kuò)展操作.如果使用-ZZ,命令強(qiáng)制使用StartTLS 握手成功.
ldapmodify -Y EXTERNAL -H ldapi:/// -f modify_syncrepl.ldif
ldapsearch選項(xiàng)-x 進(jìn)行簡(jiǎn)單認(rèn)證-D 用來綁定服務(wù)器的DN-w 綁定DN的密碼-b 指定要查詢的根節(jié)點(diǎn)-H 制定要查詢的服務(wù)器
ldapsearch -x -H ldap://192.168.119.126:389 -b "dc=rockstics,dc=com" |grep uid=ldapuser* ##匿名用戶可用ldapsearch -x -H ldap://192.168.119.126:389 -D "cn=Manager,dc=rockstics,dc=com" -b "ou=People,dc=rockstics,dc=com" -w admin123 |grep uid=ldapuser* ##用戶認(rèn)證查詢
ldappasswd選項(xiàng)-x 進(jìn)行簡(jiǎn)單認(rèn)證-D 用來綁定服務(wù)器的DN-w 綁定DN的密碼-S 提示的輸入密碼-s pass 把密碼設(shè)置為pass-a pass 設(shè)置old passwd為pass-A 提示的設(shè)置old passwd-H 是指要綁定的服務(wù)器-I 使用sasl會(huì)話方式
6.LDAP自助密碼服務(wù)參考: https://ltb-project.org/documentation/self-service-password/latest/config_general
vim /etc/yum.repos.d/ltb-project.repo
[ltb-project-noarch]name=LTB project packages (noarch)baseurl=https://ltb-project.org/rpm/$releasever/noarchenabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-LTB-project
yum install self-service-password -y
Openldap 自助密碼服務(wù)self-service-password 實(shí)現(xiàn)用戶認(rèn)證后自己修改密碼 需要設(shè)置
$who_change_password = "user"; $default_action = "change";
self-service-password配置文件/usr/share/self-service-password/conf/config.inc.php:
<?php$debug = false;$ldap_url = "ldap://localhost:389"; ##ldap地址,這里在同一臺(tái)機(jī)器上$ldap_starttls = false; ##是否啟用TLS證書$ldap_binddn = "cn=admin,dc=rockstics,dc=com"; ##DN賬號(hào)$ldap_bindpw = "rocsktics"; ##DN密碼確??梢赃B接到LDAP$ldap_base = "ou=People,dc=rockstics,dc=com";$ldap_login_attribute = "uid"; ##登陸用戶的屬性$ldap_fullname_attribute = "cn"; $ldap_filter = "(&(objectClass=inetOrgPerson)($ldap_login_attribute={login}))"; ##過濾用戶的規(guī)則$ad_mode = false;$ad_options['force_unlock'] = false;$ad_options['force_pwd_change'] = false;$ad_options['change_expired_password'] = false;$samba_mode = false;$shadow_options['update_shadowLastChange'] = false;$shadow_options['update_shadowExpire'] = false;$shadow_options['shadow_expire_days'] = -1;$hash = "clear";$hash_options['crypt_salt_prefix'] = "$6$";$hash_options['crypt_salt_length'] = "6";$pwd_min_length = 6; ##密碼最小長(zhǎng)度$pwd_max_length = 12; $pwd_min_lower = 0;$pwd_min_upper = 0;$pwd_min_digit = 0;$pwd_min_special = 0;$pwd_special_chars = "^a-zA-Z0-9";$pwd_no_reuse = true;$pwd_diff_login = true;$pwd_complexity = 0;$use_pwnedpasswords = false;$pwd_show_policy = "never";$pwd_show_policy_pos = "above";$who_change_password = "manager"; ##在LDAP目錄中寫入時(shí)使用的用戶憑證,您可以將這些參數(shù)留空以進(jìn)行匿名綁定。在這種情況下,必須使用用戶的憑證來完成密碼修改 (改為user 可實(shí)現(xiàn)用戶郵件或者問題或者短信認(rèn)證后自己修改密碼)$use_change = true; ##如果不需要,可以禁用標(biāo)準(zhǔn)密碼更改,在這種情況下,請(qǐng)確保還從default_action中刪除“exchange”,否則更改頁面仍將顯示。$change_sshkey = false;$change_sshkey_attribute = "sshPublicKey";$who_change_sshkey = "user"; ##要在LDAP目錄書寫時(shí)使用用戶的憑據(jù),替換manager用user的$who_change_password:$notify_on_sshkey_change = false;$use_questions = false; ##是否啟用問題認(rèn)證$answer_objectClass = "extensibleObject";$answer_attribute = "info";$crypt_answers = true;$use_tokens = true; ##是否啟用郵箱認(rèn)證$crypt_tokens = true;$token_lifetime = "3600";$mail_attribute = "mail";$mail_address_use_ldap = false;$mail_from = "admin@163.com";$mail_from_name = "LDAP賬號(hào)密碼重置";$mail_signature = "";$notify_on_change = false;$mail_sendmailpath = '/usr/sbin/sendmail';$mail_protocol = 'smtp';$mail_smtp_debug = 0;$mail_debug_format = 'error_log';$mail_smtp_host = 'smtp.163.com';$mail_smtp_auth = false;$mail_smtp_user = 'admin@163.com';$mail_smtp_pass = 'adminpasd';$mail_smtp_port = 465;$mail_smtp_timeout = 30;$mail_smtp_keepalive = false;$mail_smtp_secure = 'ssl';$mail_smtp_autotls = true;$mail_contenttype = 'text/plain';$mail_wordwrap = 0;$mail_charset = 'utf-8';$mail_priority = 3;$mail_newline = PHP_EOL;$use_sms = false; ##禁用短信驗(yàn)證$sms_method = "mail";$sms_api_lib = "lib/smsapi.inc.php";$sms_attribute = "mobile";$sms_partially_hide_number = true;$smsmailto = "{sms_attribute}@service.provider.com";$smsmail_subject = "Provider code";$sms_message = "{smsresetmessage} {smstoken}";$sms_sanitize_number = false;$sms_truncate_number = false;$sms_truncate_number_length = 10;$sms_token_length = 6;$max_attempts = 3;$keyphrase = "rockstics"; ##如果您使用加密令牌,則需要一個(gè)關(guān)鍵詞$show_help = true;$lang = "en";$allowed_lang = array();$show_menu = true;$logo = "images/ltb-logo.png";$background_image = "images/unsplash-space.jpeg";$login_forbidden_chars = "*()&|"; ##禁止特殊字符,防止注入$use_recaptcha = false;$recaptcha_publickey = "";$recaptcha_privatekey = "";$recaptcha_theme = "light";$recaptcha_type = "image";$recaptcha_size = "normal";$recaptcha_request_method = null;$default_action = "change"; ##默認(rèn)展示頁面;change/sendtoken/sendsms(如果你希望用戶認(rèn)證后自己修改密碼,當(dāng)然不想讓他在未認(rèn)證時(shí)看到change頁面,此時(shí)default_action可設(shè)置為sendtoken郵件認(rèn)證,即先通過郵件發(fā)送重置密碼鏈接,然后在新的鏈接里重置密碼)if (file_exists (__DIR__ . '/config.inc.local.php')) {require __DIR__ . '/config.inc.local.php';}
配置完重啟HTTP即可systemctl restart httpd
self-service-password http配置文件
[root@localhost ~]# cat /etc/httpd/conf.d/self-service-password.conf
<VirtualHost *>DocumentRoot /usr/share/self-service-passwordDirectoryIndex index.phpAddDefaultCharset UTF-8Alias /ssp /usr/share/self-service-password<Directory "/usr/share/self-service-password">AllowOverride NoneRequire all granted</Directory>LogLevel warnErrorLog /var/log/httpd/ssp_error_logCustomLog /var/log/httpd/ssp_access_log combined</VirtualHost>
self-service-password nginx配置文件
server {listen 80;root /var/www/html;index index.php index.html index.htm;# Make site accessible from http://localhost/server_name _;# Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.htmlsendfile off;gzip on;gzip_comp_level 6;gzip_min_length 1000;gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;gzip_vary on;gzip_proxied any;gzip_disable "MSIE [1-6]\\.(?!.*SV1)";# Add stdout loggingerror_log /dev/stdout warn;access_log /dev/stdout main;# pass the PHP scripts to FastCGI server listening on socket#location ~ \\.php {fastcgi_pass unix:/var/run/php-fpm.socket;fastcgi_split_path_info ^(.+\\.php)(/.+)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_index index.php;fastcgi_read_timeout 600;include fastcgi_params;}error_page 404 /404.html;location = /404.html {root /usr/share/nginx/html;internal;}# deny access to . files, for security#location ~ /\\. {log_not_found off; deny all;}}
下面是根據(jù)Linux系統(tǒng)用戶生成ldif文件創(chuàng)建Linux用戶,如非Linux用戶可直接跳過,導(dǎo)入base.ldif后可在圖形界面創(chuàng)建用戶,
groupadd ldapgroup1useradd -g ldapgroup1 ldapuser1passwd ldapuser1grep "ldapuser" /etc/passwd > /root/usersgrep "ldapgroup" /etc/group > /root/groups/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
導(dǎo)入賬號(hào)信息到OpenLDAP數(shù)據(jù)庫
ldapadd -x -w password -D cn=admin,dc=wmqe,dc=com -f /root/base.ldifldapadd -x -w password -D cn=admin,dc=wmqe,dc=com -f /root/users.ldifldapadd -x -w password -D cn=admin,dc=wmqe,dc=com -f /root/groups.ldif
添加用戶到用戶組的ldif文件
cat > add_user_to_groups.ldif << EOFdn: cn=ldapgroup1,ou=Group,dc=wmqe,dc=comchangetype: modifyadd: memberuidmemberuid: ldapuser1EOF
導(dǎo)入數(shù)據(jù)庫
ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/add_user_to_groups.ldif
后記:
CSDN 搜索rockstics 查看完整內(nèi)容
以上就是關(guān)于如何搭建pos機(jī),從0搭建LDAP統(tǒng)一認(rèn)證服務(wù)的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于如何搭建pos機(jī)的知識(shí),希望能夠幫助到大家!
