一个基于python 3 django的oauth2/docker auth/jwt sso服务器,带有附加的邮件路由。
net.maurus.authserver的Python项目详细描述
maurus.networks身份验证服务器
这是一个基于python django的服务器应用程序,提供单点登录 为我自己的设置服务。它有OAuth2端点和应用程序 不支持以下任何功能:SQL存储过程数据库抽象。
作为第二个应用程序,它提供了 dkimsigner ,这个守护进程可以说smtp和 接收邮件,然后在使用 数据库中的DKIM密钥。
第三个包含的应用程序是 邮件转发器 。因为opensmtpd 6.x没有 提供一个稳定的过滤API和依赖于我的OpenSMTPD设置的 在"存储过程API"上, 邮件转发器提供 一个说守护进程的SMTP,它解析域和电子邮件地址 authserver的 数据库,然后可以将电子邮件转发到一个或多个其他数据库 电子邮件地址。基本上是基于 authserver的数据库模式作为python守护进程。
它还提供django manage.py 命令来注册OAuth2 应用程序、用户、域和Docker注册表。这些是有用的 通过配置管理系统创建配置条目。
它还包括 Docker令牌身份验证协议 ,因此可以是 用于使用SSO凭据保护Docker注册表的推拉。这个 包括 manage.py 命令: manage.py dockerauth registry add… 允许基于脚本的设置。
最后,它包括一个兼容的客户端应用程序 用于集成apache2 mod_authnz_external 或djb checkpassword 与AuthServer兼容的客户端。
用户可以使用管理界面创建特定的"服务用户" 可用于不支持的应用程序的用户帐户的别名 OAuth2所以用户不必与服务共享他们的密码 (相当于google gmail上的相同功能)。
计划的功能
- OAuth2应用程序可以使用SSL客户端证书来验证 注册为oauth2客户机并获取其oauth2的非标准http api 凭证,减少手动配置。
- openid connect支持
- 不支持的系统的特定于服务的用户名和密码 OAuth2/OIDC
- 通过mama cas支持cas
- 通过django otp添加google authenticator支持
安装
目前还没有广泛可用的Docker容器,但您可以安装 从这个存储库:
$ virtualenv -p python3 authserver $ authserver/bin/pip install net.maurus.authserver
或者对于Debian 9.0 Stretch:
$ echo"deb http://repo.maurus.net/release/stretch mn-release main" >> /etc/apt/sources.list.d/maurusnet.list $ apt update $ apt install authserver authclient
appconfig文件夹
此应用程序在其systemd配置中使用 12factor 。 从a appconfig文件夹加载其配置
此应用程序的规范保留配置文件夹:
- /etc/appconfig/authserver
- /etc/appconfig/dkimsigner
- /etc/appconfig/mailforter
运行django admin.py,如下所示:
bin/envdir /etc/appconfig/authserver/env bin/django-admin.py [command] --settings=authserver.settings
12因素环境配置
托管配置
这些环境onment变量必须手动放置在appconfig文件夹中(或
通过配置管理)。您只需将
保险库
保留为空并设置
数据库URL
如果您不打算使用保险库。
<表>
< COLGROUP >
< COL/>
< COL/>
<广告>
变量
说明
< /广告>
<正文>
保险库
固定的CA用于验证我们正在与
右侧保险库。
保险库数据库路径
从保险库读取以获取数据库的关键路径
完全访问角色的凭据。
数据库父角色
authserver应该"sudo"到的角色(通过
设置角色
)连接到数据库后,即
主要访问角色(仅用于保险库)。
数据库名称
要连接到的数据库的名称(仅用于
拱顶)
数据库URL
当客户端ssl证书或用户名和密码
用于连接到数据库而不是Vault,
然后这个url(由dj数据库url解析)用于
连接(仅在没有保险库的情况下使用)。
<表>
智能堆栈服务
此应用程序依赖于以下可用的SmartStack服务 在本地主机上:
<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 端口 服务 SSL主机名 < /广告> <正文> 5432 PostgreSQL postgresql.local 8200 保险库 本地保险库 <表>