Skip to content

StarStudio/StarSSO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StarStudioSSO


API 文档 (Documentation)

具体的使用方法可参考 API 文档


子项目

Architecture


Docker 部署

构建

sudo ./docker-build-sso.sh           // 构建 SSO API Server 镜像
sudo ./docker-build-landevice.sh     // 构建 LANDevice 镜像
sudo ./docker-build-checkbot.sh      // 构建 Checkbot 镜像

部署 API Server

docker run --restart always -d -e REDIS_HOST=... \
        -e MYSQL_HOST=... \
        -e MYSQL_PASSWORD=... \
        -e MYSQL_DB=... \
        -e MYSQL_USER=... \
        -e SERVER_HOST_NAME=sso.starstudio.org \
        -p 8000:80 \
        -v /home/www/StarSSO/conf:/etc/StarSSO \
        -v /home/www/StarSSO/log:/var/log/StarSSO \
        starsso:1.0.1

部署 LANDevice

docker run --restart always -d --network host \
    	-e REDIS_HOST=... \
    	-e MONITOR_INTERFACE=...\
        -v /home/www/landevice/conf:/etc/LANDevice \
        -v /home/www/landevice/log:/var/log/LANDevice \
        landevice:1.0.1

部署 CheckBot

docker run --restart always -d -e REDIS_HOST=... \
        -e MYSQL_HOST=... \
        -e MYSQL_PASSWORD=... \
        -e MYSQL_DB=... \
        -e MYSQL_USER=... \
        -v /home/www/CheckBot/conf:/etc/CheckBot \
        -v /home/www/CheckBot/log:/var/log/CheckBot \
        checkbot:1.0.1

StarMember

身份管理、认证服务器,支持单点登录,提供Restful API。

依赖

推荐使用 virtualenv 进行部署,在虚拟环境中安装依赖。

pip install -r requirements.txt

配置

在环境变量 API_CFG 指定配置文件位置。

export LAN_DEV_PROBER_CONFIG=<配置文件绝对路径>
配置说明

生产环境请使用 gunicorn 部署,以保证性能。

LANDevice

设备感知服务,主动感知局域网内在线设备,提供子网内设备信息列表(MAC、IP、设备名等信息),并产生设备活动事件(加入、移除、设备名更新、DHCP重分配等事件),供其他服务使用。所有信息经过 Redis 实现订阅/发布。

依赖

推荐使用 virtualenv 进行部署,在虚拟环境中安装依赖。

pip install -r requirements_landevice.txt

配置

在环境变量 LAN_DEV_PROBER_CONFIG 指定配置文件位置。

export LAN_DEV_PROBER_CONFIG=<配置文件绝对路径>

启动服务

python -m LANDevice

会阻塞,生产环境建议使用supervisor。

CheckBot

人员统计服务,结合设备绑定信息,自动统计成员进出情况。

依赖

推荐使用 virtualenv 进行部署,在虚拟环境中安装依赖。

pip install -r requirements_checkbot.txt

配置

在环境变量 CHECK_BOT_CONFIG 指定配置文件位置。

export CHECK_BOT_CONFIG=<配置文件绝对路径>

配置示例

三个项目的配置都类似,可以共用一个配置文件

#
#   Configure SSO API Server
#

# Logging
ACCESS_LOG = 'access.log'                   # 日志文件
ERROR_LOG = 'error.log'
DEBUG_LOG = 'debug.log'

DEBUG = False                               # 调试模式


# Secret
SECRET_KEY_FILE = 'jwt.pri'                 # JWT 私钥
SECRET_KEY_FILE_MODE = 0o600                # 私钥文件权限
PUBLIC_KEY_FILE = 'jwt.pub'                 # JWT 公钥
PUBLIC_KEY_MODE = 0o666                     # 公钥文件权限

SALT_FILE = 'starstudio.salt'               # 密码散列盐
SALT_FILE_MODE = 0o600                      # 文件权限

AUTH_TOKEN_EXPIRE_DEFAULT = 86400           # Auth 类型 Token 的有效时间 (秒)
APP_TOKEN_EXPIRE_DEFAULT = 86400            # Application 类型 Token 的有效时间 (秒)

# Database
MYSQL_DATABASE_HOST = 'localhost'           # 数据库配置
MYSQL_DATABASE_PORT = 3306
MYSQL_DATABASE_USER = 'root'
MYSQL_DATABASE_PASSWORD = None
MYSQL_DATABASE_DB = 'starstudio'
MYSQL_DATABASE_CHARSET = 'utf8'

# Access contaol                            # 权限控制
ALLOW_REGISTER = True                       # 允许外部注册
ALLOW_ANONYMOUS_GROUP_INFO = True           # 允许匿名访问小组信息,以方便注册

USER_INITIAL_ACCESS = frozenset([
    'auth', 'read_self', 'read_internal', 'read_other', 'write_self', 'read_group'
])

APP_INITIAL_ACCESS = frozenset([
    'auth', 'read_self'
])


# Web console
SSO_WEB_REDIRECT_PREFIX = 'http://sso.local.com/'  # 内部 SSO 管理面板登录的Redirect前缀

#
#   LAN Device discover service.
#   CheckBot service.
#
LAN_DEV_REDIS_HOST = ''                                   # Redis
LAN_DEV_REDIS_PORT = ''
LAN_DEV_REDIS_PROBER_IDENT_PREFIX = 'LANDEV_DEFAULT'      # Redis key前缀,用于区分应用
LAN_DEV_LIVENESS_TRACK_INTERVAL = 5                       # 进行设备存活测试的时间间隔
LAN_DEV_LIVENESS_PROBE_TIMEOUT = 5                        # 进行设备发现超时时间
                                                          # 若设备在此时间内无响应,则判断
                                                          # 设备不存在
LAN_DEV_LIVENESS_PROBE_INTERVAL = 30                      # 进行设备发现的时间间隔
LAN_DEV_INTERFACE = 'wlp3s0'                              # 进行设备感知的接口名称