配置¶
http服务配置¶
-
HTTP_LISTEN
¶ - Default
'0.0.0.0:8300'
-
LITE_AUTH_URL
¶ - Default
'http://127.0.0.1:8080'
访问lite auth的站点地址,填ip或域名。部署时需要使用nginx或apache监听此地址,并把请求转发到 HTTP_LISTEN
-
ADMIN_URL
¶ - Default
'admin/'
管理后台的地址
ldap服务配置¶
-
LDAP_LISTEN
¶ - Default
'0.0.0.0:8389'
-
SEARCH_LIMIT
¶ - Default
1000
最多返回多少用户
-
LDAP_USER
¶ - Default
'ldap'
用于ldap请求的用户,此用户不能登录管理后台,相当于只读用户。如果在初始化后修改了此项,你需要进数据库手动修改uid
LDAP_API相关¶
ldap服务不是直接访问数据库,而是通过ldap api访问。
LDAP_API_URL
¶
- Default
'http://127.0.0.1:8080'
http服务的地址,ldap服务会请求这个地址。其实就是LITE_AUTH_URL,不过建议写内网地址
LDAP_API_TIMEOUT
¶
- Default
3
LDAP_API http请求的超时时间,秒。
一般不需要修改,如果遇到errorMessage为HttpServerNeverReceived错误,可以尝试调大此项
注解
如果出现需要修改此项才能正常返回的情况,请反馈给我
LDAP_API_AUTH_EXPIRY
¶
- Default
60
LDAP_API登录凭证的有效期,秒 (同时也是ldap连接的超时时间)。ldap_bind会获取登录凭证以供后续请求验证身份
-
LDAP_FIELD_MAP
¶ - Default
LDAP_FIELD_MAP = { 'cn': 'uid', 'sn': 'uid', 'userpassword': 'password', 'ou': 'groups', }
ldap字段对应的liteAuth字段 (key必须是全小写,value区分大小写) 。 search时会把filter条件中的key替换为map中的值;bind请求会把binddn中的key替换为map中的值
用于已经配置了ldap的服务,不想改配置的参数,则修改此项。
比如,已经配置的bind的dn是:”cn=admin,dc=xx”,通过添加
'cn':'uid'
-
LITE_AUTH_FIELD_MAP
¶ - Default
{}
liteAuth字段对应的ldap字段 (key区分大小写,value必须是全小写) 。 ldap返回用户信息时,会把用户属性的key替换为map中的值。
用于已经配置了ldap的服务,不想改配置的参数,则修改此项。
比如,已经配置了用户名是”givename”, 通过添加
'name':'givename'
,返回用户属性时就会使用 “givename” 代替 “name”
策略配置¶
登录锁定策略¶
密码校验器¶
-
PASSWORD_VALIDATORS
¶ - Default
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'''标点''' }, }
密码校验器,设置密码时的校验。
自定义的校验器,key为绝对路径,如: ‘custom.your_validator.FooValidator’
-
MAX_PASSWORD_AGE
¶ - Default
180
密码有效期,天
通知相关¶
-
NOTIFICATION_BACKEND
¶ - Default
{}
通知backend,用于发送密码过期,账户锁定等通知给用户。
如果使用自定义的backend,key为绝对路径,如:
custom.your_backend.Foo
注解
你可以配置多个backend,不过不建议这么做。 发通知并不是异步的,多个backend或影响请求返回时间。
自带的bacnkend有:
Email
只支持smtp
NOTIFICATION_BACKEND={ 'Email': { 'host': 'smtp.163.com', 'port': '25', 'username': 'xx@163.com', 'password': 'xx' } }
FeiShu
飞书机器人通知
NOTIFICATION_BACKEND={ 'FeiShu': { 'app_id': 'cli_xx', 'app_secret': 'xx' }, }
你需要开通飞书机器人,步骤如下:
注册 飞书开发平台 。
创建企业自建应用(标题图标随意)
获取
app_id
,app_secret
在”应用功能”中启动机器人功能
在”权限管理”中给予权限:
用户 - 通过手机号或者邮箱获取用户ID
,消息 - 给多个用户批量发消息
,消息 - 以应用的身份发消息
在“版本管理与发布”中创建版本并发布。(需要联系管理员审核通过)
SMS
短信通知
NOTIFICATION_BACKEND={ 'SMS': { 'url': 'http://xxx', # 你的接口地址 'method':'post', # 只支持 post, get 'json': True, # 提交json格式的数据 }, }
由于不同短信服务商对接方式不一样,无法给个通用的短信backend,需要短信通知你可以自行开发个backend。
对于不熟悉python的公司,可以使用提供的SMS backend,你需要开发个新接口用于接收backend提交的发送短信的请求。
这个接口的提交的参数为:mobile, msg
-
PASSWORD_EXPIRATION_NOTIFICATION
¶ - Default
PASSWORD_EXPIRATION_NOTIFICATION = { # 运行时间 'crontab': '0 8 * * *', # 还剩几天时发通知,不用写0 'days': [30, 10, 7, 3, 2, 1] }
密码过期通知任务
日志相关¶
-
LOG_PATH
¶ - Default
'./log'
-
LOG_MAX_BYTES
¶ - Default
1024 * 1024 * 10
多大后切割,默认10mb
-
LOG_BACKUP_COUNT
¶ - Default
10
保留几份
数据库配置¶
liteAuth默认使用sqlite3数据库,大多数情况下完全够用了。
如果需要你也可以切换为 mysql
, postgresql
等数据库。
mysql¶
下面给出mysql的配置说明
安装 mysqlclient 库。(docker部署不需要)
pip install mysqlclient
在配置文件中添加
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'liteauth_db', # 数据库名 'USER': 'root', # 账号 'PASSWORD': 'secret', 'HOST': '127.0.0.1', 'POST': 3306, 'OPTIONS': { 'charset': 'utf8mb4', # 使用mysql必须设置此项 }, } }
创建数据库
CREATE DATABASE liteauth_db /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
执行初始化(docker直接重启)
./lite_auth.py init
postgresql¶
安装 psycopg2 库。(docker部署不需要)
pip install psycopg2
在配置文件中添加
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'liteauth_db', # 数据库名 'USER': 'root', # 账号 'PASSWORD': 'secret', 'HOST': '127.0.0.1', 'POST': 5432, } }
创建数据库
CREATE DATABASE liteauth_db;
执行初始化(docker直接重启)
./lite_auth.py init
注解
所有支持的数据库,以及更多说明参考: https://docs.djangoproject.com/en/3.1/ref/databases/
django配置¶
liteAuth使用django框架,因此同时也继承了django的配置,不过一般不建议你修改这些配置。
django的配置见:https://docs.djangoproject.com/en/3.1/ref/settings/