Passport

请注意:此程序已经过重构,依赖此程序的其他程序若出现认证异常,烦请联系我修改,邮箱staugur@saintic.com。

程序描述:Unified authentication and authorization management SSO system for SaintIC Web  Applications.

代码仓库:https://github.com/staugur/passport

详细文档:http://docs.saintic.com/passport/install.html

以下是简略型文档:

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认证的项目有:EauDouceCherryWaterfall, 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,管理员方能看见应用管理导航,点击进入,可以看到右侧有应用列表和新建应用两个标签页,点击新建应用,如图:

        1

        如图,新建应用所需参数解释如下:

            名称:对应了客户端程序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




·End·