Passport
请注意:此程序已经过重构,依赖此程序的其他程序若出现认证异常,烦请联系我修改,邮箱staugur@saintic.com。
程序描述:Unified authentication and authorization management SSO system for SaintIC Web Applications.
代码仓库:https://github.com/staugur/passport
以下是简略型文档:
1. 下载安装
1.0 yum install -y gcc gcc-c++ python-devel libffi-devel openssl-devel mysql-devel
#开发版本体验
1.1 git clone https://github.com/staugur/passport &&\
cd passport
#稳定版本体验
1.1 wget -c -O passport-1.0.3.tar.gz https://codeload.github.com/staugur/passport/tar.gz/v1.0.3 &&\
tar zxf passport-1.0.3.tar.gz &&\
cd passport-1.0.3/
#
1.2 pip install -r requirements.txt
如果git没有安装,那么执行yum -y install git
如果pip没有安装,那么执行yum -y install python-pip(没有python-pip,可先yum -y install epel-release)
2.程序准备
2.1 修改配置文件config.py(必要选项)
2.2 创建库,要求utf8,utf8_unicode_ci
2.3 写入数据库
使用工具或command line导入misc/passport.sql文件
3. 运行使用
3.1 sh online_gunicorn.sh start|stop|restart|status
3.2 supervisord
[program:passport]
command=gunicorn -w $cpu_count --threads 16 -b ${host}:${port} main:app -k gevent --log-file $logfile --max-requests 250 --name $procname #变量自行修改,未测试
directory=程序src目录
autostart=true
autorestart=true
startsecs=5
priority=1
stopasgroup=true
killasgroup=true
3.3 docker(参考详细文档)
3.4 开发启用
python main.py
3.5 建立管理员账号(!!!)
3.5.1 执行命令 python cli.py --createSuperuser
根据提示可以创建管理员用户。
4. 客户端
目前基于passport认证的项目有:EauDouce, CherryWaterfall, IncetOps
上述项目中,EauDouce(本站,blog.saintic.com)、IncetOps(incetops.demo.saintic.com)为作者官方网站,可以使用https://passport.saintic.com提供的服务,其他情况需要您单独部署passport项目。
passport代码里有一个demo目录,是一个演示用的客户端程序,关于使用方法说明如下,其他客户端程序类似:
1. 修改配置文件config.py
1.1 主要是SSO段的配置,它的信息来自于passport应用管理中(请参考本文1、2、3步骤部署,假设部署完成,域名是http://passport.demo.com)。
登录passport.demo.com,管理员方能看见应用管理导航,点击进入,可以看到右侧有应用列表和新建应用两个标签页,点击新建应用,如图:
如图,新建应用所需参数解释如下:
名称:对应了客户端程序config.py中GLOBAL段ProcessName值(此为默认),也可以自定义(需修改客户端config.py中SSO段app_name);
描述:无实际意义,只是描述此应用作业;
回调域名:对应了客户端程序运行的地址,需要完全合格域名,比如http://eaudouce.demo.com,也可以是IP:PORT形式的,请注意域名需要连通的(DNS有解析或hosts有绑定)!
点击提交即可,注意上述信息都是客户端的,提交后在应用列表查看应用详情,客户端SSO配置段主要需要以下项:
应用名:客户端程序config.py中SSO段的app_name,SSO中注册的应用名称;
app_id:客户端程序config.py中SSO段的app_id;
app_secret:客户端程序config.py中SSO段的app_secret;
此外客户端config.py中SSO段中还有一个sso_server,即passport的完全合格域名,即假设的http://passport.demo.com。
1.2 MYSQL、REDIS,看客户端程序需要
1.3 SYSTEM段,主要是HMAC_SHA256_KEY、AES_CBC_KEY、JWT_SECRET_KEY,要求值与passport中一致。
2. 运行测试使用
python main.py