适用于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 |