适用于Microsoft ADFS和Azure AD的Django认证后端
项目描述
ADFS认证用于Django
适用于Microsoft ADFS和Azure AD的Django认证后端
- 免费软件: BSD许可证 
特性
- 集成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服务器的请求添加了RETRIES和TIMEOUT设置。 
- 添加了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 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 1fde4d97216d9c287527123871df7baa8babd5e4c52e8fb21fc2d8da170fe647 | |
| MD5 | c3bc177aea4302f0891448e029ee306d | |
| BLAKE2b-256 | 32a8def535c0d002fd1da95fcad7ddd5fea7151960304b5effbc695466f3af12 |