跳转到主要内容

适用于Microsoft ADFS和Azure AD的Django认证后端

项目描述

ADFS认证用于Django

Documentation Status https://img.shields.io/pypi/v/django-auth-adfs.svg https://img.shields.io/pypi/pyversions/django-auth-adfs.svg https://img.shields.io/pypi/djversions/django-auth-adfs.svg https://travis-ci.org/jobec/django-auth-adfs.svg?branch=master https://codecov.io/github/jobec/django-auth-adfs/coverage.svg?branch=master

适用于Microsoft ADFS和Azure AD的Django认证后端

特性

  • 集成Django与Windows 2012 R2、2016或Azure AD云中的Active Directory。

  • 为您的Django项目在内部网络环境中提供无缝的单点登录(SSO)。

  • 根据从ADFS接收的信息自动创建用户并将他们添加到Django组。

  • Django Rest Framework (DRF)集成:使用ADFS访问令牌对您的API进行认证。

安装

Python包

pip install django-auth-adfs

在您的项目settings.py中添加以下设置。

AUTHENTICATION_BACKENDS = (
    ...
    'django_auth_adfs.backend.AdfsAuthCodeBackend',
    ...
)

INSTALLED_APPS = (
    ...
    # Needed for the ADFS redirect URI to function
    'django_auth_adfs',
    ...

# checkout the documentation for more settings
AUTH_ADFS = {
    "SERVER": "adfs.yourcompany.com",
    "CLIENT_ID": "your-configured-client-id",
    "RELYING_PARTY_ID": "your-adfs-RPT-name",
    # Make sure to read the documentation about the AUDIENCE setting
    # when you configured the identifier as a URL!
    "AUDIENCE": "microsoft:identityserver:your-RelyingPartyTrust-identifier",
    "CA_BUNDLE": "/path/to/ca-bundle.pem",
    "CLAIM_MAPPING": {"first_name": "given_name",
                      "last_name": "family_name",
                      "email": "email"},
}

# Configure django to redirect users to the right URL for login
LOGIN_URL = "django_auth_adfs:login"
LOGIN_REDIRECT_URL = "/"

########################
# OPTIONAL SETTINGS
########################

MIDDLEWARE = (
    ...
    # With this you can force a user to login without using
    # the LoginRequiredMixin on every view class
    #
    # You can specify URLs for which login is not enforced by
    # specifying them in the LOGIN_EXEMPT_URLS setting.
    'django_auth_adfs.middleware.LoginRequiredMiddleware',
)

在您的项目urls.py中添加以下路径

urlpatterns = [
    ...
    path('oauth2/', include('django_auth_adfs.urls')),
]

这将向Django添加以下路径

  • /oauth2/login,用户将被重定向到此处以启动使用ADFS的登录。

  • /oauth2/login_no_sso,用户被重定向到该地址,以启动使用ADFS进行登录但强制显示登录屏幕。

  • /oauth2/callback,ADFS登录后返回的地址。因此,请确保在ADFS上设置重定向URI为此地址。

  • /oauth2/logout,用于从Django和ADFS注销用户。

您可以在Django模板中这样使用它们:

<a href="{% url 'django_auth_adfs:logout' %}">Logout</a>
<a href="{% url 'django_auth_adfs:login' %}">Login</a>
<a href="{% url 'django_auth_adfs:login-no-sso' %}">Login (no SSO)</a>

贡献

欢迎对代码的贡献。有关更多详细信息,请参阅CONTRIBUTING.rst文件。

变更日志

1.3.0 - 2019-03-??

新增

  • 新增设置SETTINGS_CLASS,默认为django_auth_adfs.config.Settings。这提供了一种从除了Django设置以外的来源加载AUTH_ADFS配置的机制。

1.2.0 - 2019-03-01

移除

  • Django 1.8、1.9和1.10的支持。它们已结束扩展支持,保留对这些版本的支持变得越来越复杂。

修复

  • 轮文件中缺少django模板

1.1.2 - 2018-12-11

新增

  • 添加视图以选择性地禁用登录链接的SSO

修复

  • 具有空密码的现有用户引发异常

1.1.1 - 2018-12-07

新增

  • 添加设置以强制登录屏幕并禁用ADFS上的SSO。

  • 关于如何启用除IE & Edge之外浏览器的SSO的文档。

修复

  • 防止用户名字段被断言映射覆盖。

  • 防止在ADFS配置尚未加载时注销时出现跟踪回溯。

  • 修复日志消息中的字段交换。

安全

  • 不允许忽略观众断言。防止访问令牌重用。

  • 为新创建的用户设置不可用的密码,而不是留空。

1.0.0 - 2018-12-05

此版本包含向后不兼容的更改。请确保阅读整个发行说明

新增

  • Windows 2016(即ADFS 4.0)支持

  • AzureAD支持(检查设置TENANT_ID

  • Django Rest Framework支持。

  • 为对ADFS服务器的请求添加了RETRIESTIMEOUT设置。

  • 添加了CLIENT_SECRET设置以支持OAuth2流程中的客户端密钥。

  • 用户现在被重定向回触发登录的页面,而不是主页面。

  • 用户所属的组现在可以在Django中自动创建(检查设置MIRROR_GROUPS

更改

  • Django 2.1支持

  • 现在自动设置所有可以自动确定的设置

  • 当映射到用户模型中非必需字段的断言缺失时,记录警告而不是引发异常

不兼容的更改

  • 由于添加了登录和注销视图,因此从ADFS返回的重定向URI现在应指向/oauth2/callback。将其保留为/oauth2/login会导致潜在的循环重定向。

已弃用

  • 这些设置现在从ADFS元数据自动加载,并且已弃用

    • AUTHORIZE_PATH

    • LOGIN_REDIRECT_URL

    • ISSUER

    • REDIR_URI

    • SIGNING_CERT

    • TOKEN_PATH

0.2.1 - 2017-10-20

  • Django 2.0支持和测试。

0.2.0 - 2017-09-14

  • 修复了一个错误,当最后一个ADFS签名密钥不是签名JWT令牌的密钥时,认证失败。

  • Django 1.11支持和测试。

  • 正确处理ADFS重定向后缺失的“code”查询参数。

  • 将ADFS配置指南添加到文档中。

  • 允许根据断言设置布尔用户模型字段。

  • 在Django >=1.9中不再需要include()namespace参数。

  • 修复了一些Django 2.0弃用警告,提高了未来的Django支持。

0.1.2 - 2017-03-11

  • 使用MIDDLEWARE设置支持Django 1.10的新式中间件。

0.1.1 - 2016-12-13

  • 在代码和文档中修复了多个错误。

  • 正确处理类变量以允许从类 AdfsBackend 继承。

0.1.0 - 2016-12-11

  • 默认情况下,ADFS 签名证书每24小时从 FederationMetadata.xml 文件中加载。当将 AutoCertificateRollover 设置为 True(默认值)时,可自动跟踪证书更新。

  • 组分配优化。用户不再被从所有组中移除和添加。相反,只处理需要移除或添加的组。

向后不兼容的更改

  • 从配置变量中删除了冗余的 ADFS_ 前缀。

  • REQUIRE_LOGIN_EXEMPT_URLS 变量重命名为 LOGIN_EXEMPT_URLS

0.0.5 - 2016-12-10

  • 将身份验证后端的用户更新代码拆分为单独的函数。

0.0.4 - 2016-03-14

  • 使组声明的缺失变得非致命,以允许没有组的用户。

0.0.3 - 2016-02-21

  • ADFS_REDIR_URI 现在是必需设置。

  • 现在支持 Python 2.7、3.4 和 3.5。

  • 现在支持 Django 1.7、1.8 和 1.9。

  • 添加了调试日志以帮助故障排除。

  • 添加了单元测试。

  • 大量代码清理。

0.0.2 - 2016-02-11

  • 修复了与 apache + mod_wsgi 一起使用时加密库的可能问题。

  • 添加了可选上下文处理器,以使 ADFS 认证 URL 可用作模板变量(ADFS_AUTH_URL)。

  • 添加了可选中间件类,可以强制匿名用户进行身份验证。

0.0.1 - 2016-02-09

  • 初始版本。

项目详情


下载文件

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

源分布

cedar-adfs-forked-1.2.0.tar.gz (1.1 MB 查看哈希

上传时间

支持者