liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#

Posted feko大魔王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#相关的知识,希望对你有一定的参考价值。

准备环境(干净环境)

  • centos7
  • python3.6(yum安装)
  • redis5(可以yum安装,自行百度)
  • sqlite3(需要3.9以上,自带的不行需要编译安装)

开始部署liteAuth

yum install python3 git -y
python3 -m pip install --upgrade pip
mkdir /data/ldap -p
python3 -m venv /data/ldap/liteAuth_env ##创建虚拟环境,python3.6
cd /data/ldap/liteAuth_env
git clone https://github.com/gojuukaze/liteAuth.git ##版本是0.1.0
source bin/activate ##切换到虚拟环境
cd liteAuth/
pip install --upgrade pip ##升级虚拟环境pip,默认pip3
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ ##安装基本依赖
pip install Twisted==20.3.0 ##安装低点版本,否则启动时会报_PY3找不到的错误
pip install simpleui==4.0.2 ##安装需要模块
./lite_auth.py init ##安装

配置liteAuth

cat > config/lite_auth_config.py <<EOF
DEBUG = False
"""
http server 配置
"""
HTTP_LISTEN = 0.0.0.0:9300
# 访问lite auth的站点地址,填ip或域名
LITE_AUTH_URL = http://127.0.0.1:9080
# 一定要以 / 结尾
ADMIN_URL = admin/
# 用户信息中禁止用户自主修改的属性字段,管理员组不会被限制
# 非属性字段用户是不能自己修改的,不用添加
READONLY_ATTRIBUTES = [mail]
# ------ 通知 -------
# 通知backend,用于发送密码过期,账户锁定等通知给用户。
# 目前支持 Email(只支持smtp),FeiShu,SMS
# 如果使用自定义的backend,key为绝对路径
NOTIFICATION_BACKEND = {
# Email: {
# host: smtp.163.com,
# port: 25,
# username: xx@163.com,
# password: xx
# },
# FeiShu: {
# app_id: cli_xx,
# app_secret: xx
# },
# 短信,
# 由于不同短信服务商对接方式不一样,无法给个通用的短信backend,需要短信通知你可以自行开发个backend。
# 对于不熟悉python的公司,可以使用提供的SMS backend,你需要开发个新接口用于接收backend提交的发送短信的请求
# 这个接口的参数为:mobile, msg
# SMS: {
# url: http://xxx, # 你的接口地址
# method:post, # 只支持 post, get
# json: True, # 提交json格式的数据
# },
}
# 密码过期通知
PASSWORD_EXPIRATION_NOTIFICATION = {
# 运行时间
crontab: 0 8 * * *,
# 还剩几天时发通知,不用写0
days: [30, 10, 7, 3, 2, 1]
}
"""
ldap server 配置
(虽然下面是ldap的配置,但对应的代码不一定在ldap server中,可能放到了ldap api中)
"""
LDAP_LISTEN = 0.0.0.0:9389
# 最多返回多少用户
SEARCH_LIMIT = 1000
# 用于ldap请求的用户名,此用户不能登录管理后台,相当于只读用户
# 如果在初始化后修改了此项,你需要进admin手动修改uid
LDAP_USER = ldap
# ----- LDAP_API -------
# http服务的地址,ldap服务会请求这个地址。
# 其实就是LITE_AUTH_URL,不过建议写内网地址
LDAP_API_URL = http://127.0.0.1:9080
# LDAP_API http请求的超时时间,秒
# 一般不需要修改,
# 如果遇到errorMessage为HttpServerNeverReceived错误,可以尝试调大此项
# (如果出现需要修改此项才能正常返回的情况,请反馈给我)
LDAP_API_TIMEOUT = 3
# LDAP_API登录凭证的有效期,秒 (同时也是ldap连接的超时时间)
# ldap_bind会获取登录凭证以供后续请求验证身份
LDAP_API_AUTH_EXPIRY = 60
# ldap字段对应的liteAuth字段(key必须是全小写,value区分大小写)
# ldap请求时会把filter条件中的key替换为map中的值
LDAP_FIELD_MAP = {
cn: uid,
sn: uid,
userpassword: password,
ou: groups,
}
# liteAuth字段对应的ldap字段(key区分大小写,value必须是全小写)
# ldap返回用户信息时,会把用户属性的key替换为map中的值
LITE_AUTH_FIELD_MAP = {}
"""
策略配置
"""
# ------ 用户锁定策略 ------
# 最大连续登录失败次数,0表示无限制
MAX_LOGIN_ATTEMPT_NUM = 15
# n秒后重置登录失败次数
RESET_LOGIN_ATTEMPT_NUM_AFTER = 60
# 锁定时间,秒
USER_LOCK_DURATION = 60 * 3
# ------ 密码校验 ------
# 密码校验器
# 如果使用自定义的校验器,key为绝对路径,如: your_path.your_validator.FooValidator
PASSWORD_VALIDATORS = {
# 长度校验,min_length: 1-30
LengthValidator: {min_length: 8},
# 密码重用校验,禁止使用前num次使用的密码,0-5
ReuseValidator: {num: 2},
# 常见密码校验,禁止过于简单的密码,如:1234
CommonValidator: {},
# 属性相似度校验,禁止和uid,mail相似的密码
UserInfoSimilarityValidator: {},
# 复杂度校验
CharacterValidator: {
character_types: 2, # 包含的多少种不同字符, 1-4
symbols: r!"#$%&()*+,-./:<=>?@[\\]^_`{|}~ # 允许的标点。 注意:格式是 r标点
},
}
# ------ 密码其他配置 ------
# 密码有效期,天
MAX_PASSWORD_AGE = 36500
"""
LOG配置
"""
LOG_PATH = ./log
# 多大后切割,默认10mb
LOG_MAX_BYTES = 1024 * 1024 * 10
# 保留几分
LOG_BACKUP_COUNT = 10
EOF

启动liteAuth

./lite_auth.py start

配置nginx转发

cat > /etc/nginx/conf.d/local.conf <<EOF
server {
# 如果你修改了LITE_AUTH_URL,改为对应的值
listen 9080;
server_name 127.0.0.1 192.168.31.170;
# 替换为你的路径
root /data/ldap/liteAuth_env/liteAuth;
location / {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
# we dont want nginx trying to do something clever with
# redirects, we set the Host: header above already.
proxy_redirect off;
# 如果你修改了HTTP_LISTEN,改为对应的值
proxy_pass http://127.0.0.1:9300;
}
}
EO

登录前端配置

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_精简ldap

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_python_02

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_ldap_03

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_ldap_04


相关模块版本

## pip list
Package Version
----------------- ---------
asgiref 3.4.1
attrs 21.2.0
Automat 20.2.0
certifi 2021.10.8
cffi 1.15.0
chardet 3.0.4
click 7.1.2
constantly 15.1.0
cryptography 36.0.0
Django 3.2.5
django-crontab 0.7.1
gevent 20.9.0
greenlet 1.1.2
gunicorn 20.0.4
hyperlink 21.0.0
idna 2.10
incremental 21.3.0
jsonfield 3.1.0
ldaptor 19.1.0
passlib 1.7.4
pip 21.3.1
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycparser 2.21
PyHamcrest 2.0.2
pyOpenSSL 21.0.0
pyparsing 3.0.6
pytz 2021.3
requests 2.24.0
service-identity 21.1.0
setuptools 39.2.0
simpleui 4.0.2
six 1.16.0
sqlparse 0.4.2
treq 20.4.1
Twisted 20.3.0
typing_extensions 4.0.1
urllib3 1.25.11
zope.event 4.5.0
zope.interface 5.4.

spug运维平台的实践

  • 在liteAuth创建用户

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_精简ldap_05


  • 在spug上配置ldap

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_python_06


  • 登录spug测试

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_ldap_07

liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#_ldap_08


以上是关于liteAuth的部署和实践(精简版LDAP)#私藏项目实操分享#的主要内容,如果未能解决你的问题,请参考以下文章

LDAP-openldap服务部署和测试(YUM安装)

部署phpmyadmin并配置apache通过ldap验证

centos 7 部署LDAP服务

LDAP架构部署认证

19LDAP TLS配置

linux下ldap部署详解