跳转到主要内容

uniAuth是一个基于Django的SAML2身份提供者

项目描述

Django uniAuth

CI build pypi Python version Documentation Status License

uniauth-saml2-idp 是一个基于 Pysaml2 和 Django 构建的 SAML2 IDentity Provider。它最初是从 djangosaml2idp 项目中分叉出来的,现在几乎已经没有什么遗留。

有关使用规范和高级主题,请参阅 readthedocs上的官方文档

Alt text

SAML2功能

  • HTTP-REDIRECT 和 POST 绑定(签名认证请求必须在 HTTP-POST 绑定中);
  • ForceAuthn;
  • SLO,SAML单点登出;
  • 签名和加密断言;
  • AllowCreate,nameid以持久性nameid格式存储。

特定于实现的特性

  • 添加新元数据或服务提供者定义时不需要重启;
  • 完全支持国际化(i18n);
  • 通过Admin后端UI交互式地定义元数据存储;
  • 通过Admin后端UI交互式地定义服务提供者;
  • 基于 AGID指南 的可定制模板和样式;
  • 在保存时对元数据存储和SP进行验证,以防止生产环境中的错误配置;
  • 可配置Computed NameID的摘要算法和盐;
  • 许多可配置选项,对于每个SP,我们可以决定
    • 显式启用/禁用;
    • 签名和摘要算法;
    • 属性发布(强制设置一组或发布SP请求的属性);
    • 属性重写和创建,每个SP的AttributeProcessors完全可配置,属性发布的每个方面都可以从头开始定制;
    • 协议屏幕消息,可用性,数据同意书。
  • 通过uwsgi和Python日志配置可配置的日志轮转;
  • 每个用户可导入的StoredPersistentID,来自另一个IDP的迁移;
  • 可选的LDAP网络管理员,通过django-ldap-academia-ou-manager <https://github.com/peppelinux/django-ldap-academia-ou-manager>配置应用(ldap_peoples);
  • 通过pyMultiLDAP支持多个LDAP源;
  • 支持多因素身份验证,与djangosaml2idp最初提供的一样;
  • aaclimdquery管理命令(是的,受Shibboleth IdP的启发);
  • 详细日志。

示例

uniAuth允许从Web管理员后端界面直接添加新元数据和注册新服务提供者。有关使用规范和高级主题,请参阅readthedocs上的官方文档


Alt text Alt text 在创建或更新时,每个元数据存储都将被验证,以避免在生产环境中出现配置错误。


Alt text Alt text 创建一个新的SP。如果SAML_DISALLOW_UNDEFINED_SP为True,此配置是强制性的,否则只需要sp元数据,SP配置将自动使用默认配置创建。

测试

pip install -r requirements-dev.txt
pytest tests/ -x --pdb

代码覆盖率

coverage erase
coverage run -m pytest tests/
coverage report -m

测试LDAP服务器在tests/ldapd.py中可用。您可以手动运行它并使用ldapsearch进行查询。单元测试将自动运行ldapd.py

python3 tests/ldapd.py

ldapsearch -H ldap://#:3899 -b "dc=testunical,dc=it" -x uid=mario

# auth bind
ldapsearch -H ldap://#:3899 -b "dc=testunical,dc=it" uid=mario -D "uid=mario,ou=people,dc=testunical,dc=it" -w cimpa12

贡献

请自由贡献,为每个功能创建单独的分支来创建PR。如果您想在开发之前进行讨论,请打开一个Issue,以降低因某些原因无法合并的风险。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

uniauth_saml2_idp-2.0.1.tar.gz (68.3 kB 查看哈希值)

上传时间

构建分布

uniauth_saml2_idp-2.0.1-py3-none-any.whl (42.6 kB 查看哈希值)

上传时间 Python 3

支持者