• Stars
    star
    114
  • Rank 308,031 (Top 7 %)
  • Language
    Shell
  • License
    Creative Commons ...
  • Created over 3 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Lightweight 🪶 self-hosted SSO server, resource utilization rate is <1% CPU, MEM <15 M

单点登录服务

一个简单、轻量支持自托管的单点登录服务,用于简化登录认证操作,支持 OTP 方式登录,同时可以作为 Traefik Forward Auth 后端使用。变更日志

For English users: ENGLISH VERSION.

程序截图

作为一个简单的轻量级程序,它只有四个图形界面:登录、OTP登录、OTP绑定、帐户页面。

用户界面

Docker

你可以尝试使用 Docker 在几秒钟内运行一个属于你的私有服务:

docker run -d --name=sso-server \
            -e CLIENT_NAME="YOUR OWN SSO SERVER" \
            -e CLIENT_ID="YOUR_OAUTH_CLIENT_ID" \
            -e CLIENT_SECRET="YOUR_OAUTH_CLIENT_SECRET" \
            -e USER_PASS="password" \
            -p 3000:80 soulteary/sso-server:1.1.5

服务启动之后,使用浏览器访问 http://localhost:3000/login,将可以看到登录界面。

默认的账号密码是 username(不带引号)和 password(密码由用户通过 USER_PASS 变量设置,示例中的密码是这个)。

注意:服务使用的 usernameuser_email 字段内容,默认将根据“授权许可文件”进行初始化。你可以阅读下文中“配置文件”以及参考示例文件,来了解如何使用授权文件。你可以通过自助生成授权文件来定义你的用户名邮箱地址点击此处在线生成

API 及路由

作为用户,我们只需要了解两个路由即可:

  • Router
    • 登录页面: /login
    • 登出登录: /logout

除此之外,还有两个不太重要的路由,它们是:

  • Router
    • 用于容器健康检查使用: /health
    • 用户账号信息展示: /account

程序当前支持五种常用的 API:

  • API
    1. 当前账号登出: /logout
    2. OAuth Token: /oauth/token
    3. OAuth 用户信息: /api/userinfo,
    4. OAuth 客户端信息: /api/clientinfo,
    5. Traefik Forward Auth: /api/traefik-auth-user
    6. Outline 用户信息: /api/outline/oidc

一般情况下,你不需要知道如何使用它们,你只需要知道如何将它们填入需要使用认证的程序配置里就行了,像是这样:

tokenURL           = 'http://host-name-or-ip/oauth/token'
authorizationURL   = 'http://host-name-or-ip/dialog/authorize'
profileUrl         = 'http://host-name-or-ip/api/userinfo'

程序指纹

为了保证程序的安全,程序启动时,会输出一个唯一的校验值。

如果数值与下表不符,请不要继续运行程序。

  • 版本: soulteary/sso-server:1.1.6
    • 指纹: 060d0706d05dabd66bbc94b858b481763c310cfb3702ffce0a87c3f857b26327
    • 镜像: dbf19912a279dd02c2c18a152ce5b61bd088845f194f693baa924a10eddb96e6

查看所有历史版本的指纹。

当前支持登录模式

  • OAuth2
  • OTP
  • (计划中) L2TP

资源使用

  • CPU 使用率: <1%
  • MEM 使用率: ~15MiB

配置文件 (.env 及环境变量)

为了保证程序能够正确运行,我们需要定义一些变量,其中大部分配置都是可选的。(可以忽略)

环境变化 是否可选 示例 默认值 说明
USER_PASS YOUR_PASS_WORD password 设置属于你的账号密码。
CLIENT_ID YOUR_CLIENT_ID SjVN7VhgOsku OAuth2 认证需要使用的 Client ID
CLIENT_SECRET YOUR_CLIENT_SECRET t3Qt89nv9u5O OAuth2 认证需要使用的 Client Secret
CLIENT_ISTRUSTED true false 如果设置为 True,则需要授权的程序无需用户明确授权确认即可使用用户信息
CLIENT_NAME My CLIENT NAME GENERAL SSO SERVER 仅用于页面或命令行信息显示。如果未设置,将尝试使用 SERVER_NAME 变量进行替代。
SERVER_NAME My SSO Server SSO Server 仅用于OTP工具、Web 页面或命令行信息显示
PORT 8080 80 docker中的程序监听端口
OTP_OPTION Yes KEY:MIZUSR2ZJZTWUSDY;PERIOD:30 用户指定的OTP参数,第一次绑定后,可以在用户页面获得
SESSION_SECRET iWoupoFYZ9Ud RANDOM STRING() 仅用于页面或命令行信息显示
SERVER_DOMAIN sso.example.com 仅在 Traefik docker-compose.yml 文件中需要
LICENSE ...(huge text) PRESET_LICENSE_TEXT 用户许可协议的内容,和 LICENSE_FILE 二选一使用
LICENSE_FILE /app/my.lic 用户许可协议文件的文件路径,和 LICENSE 二选一使用

针对不同应用进行授权区分

如果你需要针对不同的应用设置不同的授权参数,则可以使用 CLIENT_* 系列参数。

环境变化 是否可选 示例 默认值 说明
CLIENT_1_ID YOUR_CLIENT_ID SjVN7VhgOsku 作用和 CLIENT_ID 一致,为某个应用或者某类应用单独指定
CLIENT_1_SECRET YOUR_CLIENT_SECRET t3Qt89nv9u5O 作用和 CLIENT_SECRET 一致,为某个应用或者某类应用单独指定
CLIENT_1_ISTRUSTED true false 作用和 CLIENT_ISTRUSTED 一致,为某个应用或者某类应用单独指定
CLIENT_1_NAME My CLIENT NAME GENERAL SSO SERVER 作用和 CLIENT_NAME 一致,为某个应用或者某类应用单独指定

目前程序支持 1 ~ 5,所以我们可以定义五个不同的应用,应该足够一般场景使用。

示例

可以在此处查看更多 docker 示例。

默认账号:

  • 用户名: username
  • 密码: password

为了进一步提高程序的安全性,默认服务重启时需要重新扫码设置账户的 OTP 验证。这个默认行为允许通设置固定的 OTP_OPTION 进行变更。

可选项:出站网络限制

本项目不需要使用外网服务。如果你担心这个程序,可以参考下面的方法来限制容器中的程序访问外网数据,从根本上解决你的顾虑,:D

https://github.com/francoisruty/fruty_docker-outbound-restriction

More Repositories

1

tenant-point

租房要点,适用于北上广深杭,欢迎补充。
1,597
star
2

docker-flare

Flare ✨ Lightweight, high performance and fast self-hosted navigation pages, resource utilization rate is <1% CPU, MEM <30 M, Docker Image < 10M
1,105
star
3

docker-prompt-generator

Using a Model to generate prompts for Model applications. / 使用模型来生成作图咒语的偷懒工具,支持 MidJourney、Stable Diffusion 等。
Python
1,002
star
4

Home-Network-Note

🚧 持续更新 🚧 记录搭建兼顾学习娱乐的家用网络环境的过程,折腾过的一些软硬件小经验。
Ruby
971
star
5

forever-coolshell

酷壳 - CoolShell 电子存档,🕯️ 谨纪念和保存陈皓先生的公开的技术分享内容,感恩皓叔对中文互联网,尤其是技术领域无私的分享。
HTML
750
star
6

docker-llama2-chat

Play LLaMA2 (official / 中文版 / INT4 / llama2.cpp) Together! ONLY 3 STEPS! ( non GPU / 5GB vRAM / 8~14GB vRAM)
Python
368
star
7

docker-gitbook-pdf-generator

如果你想使用 GitBook 生成 PDF ,又不想折腾,使用这个项目就对啦!
Dockerfile
172
star
8

docker-outline

A simple 🧑‍💻 and reliable self-hosted plan for Outline.
Shell
121
star
9

flare

🏂 Challenge all bookmarking apps and websites directories, Aim to Be a best performance monster.
Go
104
star
10

jquery-city-select

一个简单的jQuery省市联动插件,支持AMD/CMD方式调用,当然,也支持直接引用。
JavaScript
102
star
11

certs-maker

Tiny self-signed tool, file size between 1.5MB(binary) and 4MB (docker). Generate a self-hosted / dev certificate through configuration.
Go
96
star
12

docker-flame

简洁美观的个人启动页,适用于 HomeLab 爱好者的中文化的自部署版本。
86
star
13

Get-D2-2014-Ticket

Get D2 2014 Ticket - Designer & Developer Frontend Technology Forum
JavaScript
81
star
14

docker-cronicle

Simple, lightweight, beautiful webui Cronjob / Scheduled task docker solution.
JavaScript
79
star
15

docker-stable-diffusion-taiyi

带 Web UI 的 Docker taiyi (太乙),中文 Stable Diffusion WebUI 一键运行环境。
Dockerfile
76
star
16

sparrow

ChatGPT Style client-compatible Backend Server, open source implementation.
Go
74
star
17

docker-chatgpt

< 10MB, One-click self-hosted ChatGPT, allowing access to various data sources and non-OpenAI models.
70
star
18

njs-learning-materials

List some learning materials to help you step into the world of njs.
56
star
19

traefik-example

Traefik 快速上手示例
Shell
53
star
20

wordpress-for-sae

WordPress For SAE 3.9已更新.
PHP
52
star
21

docker-code-interpreter

One-click Docker APPs of Open-source Code Interpreter Projects.
Shell
39
star
22

generator-lazy

一个要努力成为机智✨的脚手架的工具🔧,给你的项目一个好的开始。
JavaScript
38
star
23

rss-can

🚀 Harness the power of AI, Got RSS CAN be better and simple.
Go
33
star
24

AvatarCache

Your Own Avatar Api.
PHP
32
star
25

docker-sdxl

简单、靠谱的 SDXL Docker 使用方案。
Python
26
star
26

easy-ESXi-builder

Still having trouble building environments for ESXi? Just use this one-click tool.
Dockerfile
24
star
27

portable-docker-app

🎩 Magic in Pocket / 🪄 口袋里的“魔法”.
Python
24
star
28

lorenote

A knowledge note tool/solution that combines engineering and AI.
21
star
29

nginx-formatter

Small and easy-to-use Nginx configuration formatting tool (CLI & GUI), support Docker, x86, ARM, macOS...
Go
21
star
30

docker-gfpgan

TencentARC GFPGAN ALL-IN-ONE Docker Images. support x86 / ARM.
Dockerfile
19
star
31

docker-njs

Pure njs(Nginx JavaScript) Docker image, more convenient for development and debugging.
Shell
19
star
32

docker-nginx-forward-proxy

For Centrally manage application export traffic, A/B testing, etc. Perhaps the smallest nginx forward proxy server docker images.
Dockerfile
19
star
33

remote-hosts-server

Tiny(~5MB), Easy, Docker Support. Manage and share your Hosts configuration, suitable for tools such as Switch Hosts.
JavaScript
17
star
34

prebuilt-nginx-modules

A bunch of useful pre-built modules for nginx, can be used directly in docker or Debian/Ubuntu.
16
star
35

have-fun-with-AnimeGAN

Have fun with the model: AnimeGAN
Python
16
star
36

docker-wechat-markdown-editor

开箱即食的微信编辑器。(容器镜像大约6M)
JavaScript
15
star
37

ubuntu-remote-control-helper

Make Ubuntu Native Remote Control Easy to use and Reliable.
Go
15
star
38

nginx-qrcode-server

High Performance QR Code Server with Nginx, Close to the size of the official Nginx Docker Image (~ 55MB).
Dockerfile
12
star
39

traefik-aria2-with-webui

Aria2 with WebUI and Traefik.
JavaScript
11
star
40

autoindex

A simple & neat AutoIndex website template for Nginx.
JavaScript
11
star
41

docker-pytorch-playground

Running models faster and easier, support for x86 and ARM (M1, M1Pro).
Dockerfile
11
star
42

ngx-php-micro-blog

Microlog example based on Nginx and Nginx module (NGX-PHP8), A high-performance implementation that does not use the combination of Nginx and PHP-FPM, which is safe and reliable.
PHP
9
star
43

firephp-for-chrome-sae

FirePhp For Chrome
JavaScript
9
star
44

docker-nomnoml

Docker Nomnoml is a simple but elegant self-hosted UML Generator & UML Sharing solution.
Dockerfile
9
star
45

china-university-icon

中国大学校徽
JavaScript
9
star
46

debug.js

Let browser debug better.
JavaScript
9
star
47

Replace-Google-Fonts

Use Qihoo 360 Open Fonts Service to replace Google's.
PHP
8
star
48

wp2md

Convert WordPress Posts to markdown files. / 将WordPress文章转换为md文件。
JavaScript
8
star
49

youling

Ghost CJK Version. 既然官方不喜欢非英文用户,那么就不提PR了,顺便用换个非英文名好了。
JavaScript
8
star
50

zheteng-it

📒持续更新📒 开源的折腾笔记,分享一些尚未写成博客的内容。
HTML
6
star
51

docker-codeformer

快速体验 & 上手 CodeFormer,2G 显存可以玩。
Python
5
star
52

mini-shortener

Zero dependency, configuration-based, short link service with less than 200 lines.
Go
5
star
53

redirect-test

Redirect performance test.
Java
5
star
54

linux-scripts

Store some useful small scripts.
Shell
5
star
55

open-ai-camera

本地隐私优先的,AI 人像相机解决方案,基于 Docker 和 Stable Diffusion。
4
star
56

hosts-blackhole

BEST hosts list processing helper for ad-blocking/blocker programs: AdGuard, AdAway, blocky, grimd...
HTML
4
star
57

tech-radar-demo

A simple technical radar implementation
HTML
4
star
58

ghost-aliyun-oss-store

Ghost v3.x use Aliyun OSS storage.
JavaScript
4
star
59

You-Dont-Need-Webpack

HTML
4
star
60

funny-china-weather

开箱即用的天气软件包,获取基础的天气信息,以及对应天气的动态图标。
Go
4
star
61

simple-i18N

适用于单页面的i18N脚本。
CSS
4
star
62

which-mi-phone-should-buy-for-flashing

哪块小米/红米手机买来刷机合适呢?/ Which Mi Phone should buy for flashing?
4
star
63

soulteary

4
star
64

gitlab-variable-helper

Allow use configuration file update gitlab group variables.
JavaScript
4
star
65

docker-emotion

Out-of-the-box text emotion / sentiment analysis application, supports Chinese and English.
JavaScript
4
star
66

decode-your-qrcode

《使用 Docker + Node 快速实现一个在线的QRCode解码服务》文章配套代码
HTML
3
star
67

phabricator-dockerize

Dockerfile
3
star
68

docker-milvus

[WIP] Reliable, highly scalable Milvus docker images
Dockerfile
3
star
69

localStorage-limit-test

Collect localStorage limit, improve client storage decisions.
CSS
3
star
70

nginx-rsa-encryption

Use NJS to implement RSA automatic encryption and decryption with API interface
JavaScript
3
star
71

electron-monitor

Retro Style Status Monitor Page.
2
star
72

awesome-golang-embed

WIP (Golang) Everything you ever wanted to know about static resource embedding
Go
2
star
73

Replace-Google-Libs

Use Qihoo 360 Open Libs Service to replace Google's.
PHP
2
star
74

Error-Tracer

简单的前端问题追踪程序,完善空间很大。
JavaScript
2
star
75

njs-ddns-service

Use NJS to implement DDNS service
JavaScript
2
star
76

emoji-extra

extra emoji for meituan im.
JavaScript
2
star
77

generator-lazy-demo

Generator Lazy Demo.
CSS
2
star
78

CSS-Minimum-Support

一份简单的CSS支持度列表。
2
star
79

docker-fileserver

2
star
80

posts-adapter-pure-to-hugo

code highlight / post expect / archives features for pure markdown file.
JavaScript
2
star
81

tengine-website-generator

HTML
2
star
82

hugo-helper

存放一些能够让 Hugo 更好用的小工具,支持更加结构化的使用文章数据。
Go
2
star
83

text-retrieval-example

Let's talk about text retrieval.
Go
2
star
84

js-tasker

一个随便写的js tasker。
JavaScript
2
star
85

domain-dashboard

[wip]simple domain dashboard
JavaScript
2
star
86

docker-dokuwiki

Elegant docker environment, for DokuWiki.
Dockerfile
2
star
87

xStorage

Inspire by simpleStorage and jStorage (@andris9).
JavaScript
1
star
88

homelab-group

Just Waiting for the ICP process to end and update the content
1
star
89

url-param-parser.js

A simple function to Parse URL Params.
JavaScript
1
star
90

go-closure-compiler

JavaScript
1
star
91

offline-logs-to-clickhouse

Offline Logs Processing for ClickHouse.
Dockerfile
1
star
92

javascript-leetcode-playground

My JavaScript LeetCode Playground.
JavaScript
1
star
93

acm-fellows-api

API of ACM Fellows.
Go
1
star
94

serving-static-files

A plan about serving static files && deployed.
Lua
1
star
95

k8s-images-trans-helper

Shell
1
star
96

easy-asp-demo

帮同学写的一个简单的ASP程序,貌似是毕业设计。
ASP
1
star
97

easy-map-demo

为凌霄同学写的DEMO,基于Story/Qing+Bootstrap。
PHP
1
star
98

DemoAuthenticator

A simple demo authenticator chrome ext.
HTML
1
star
99

docker

🐳
Dockerfile
1
star
100

scroll-joke

Endless rolling.
JavaScript
1
star