django_saml2_auth的单次注销(SLO)插件
django-saml2-auth-signout-slo的Python项目详细描述
django-saml2-auth-signout-slo
在django-saml2-auth中支持单次注销(SLO)的插件
简介
默认情况下,django-saml2-auth只注销本地django应用程序中的用户。出于安全考虑, 注销需要传递给IdP(身份提供者)。否则,单击登录名的用户 按钮将在不提供密码(或其他方式)的情况下再次登录。在
示例
在设置.py公司名称:
INSTALLED_APPS += (
...
'django_saml2_auth',
# ensure the plugin is loaded
'django_saml2_auth_signout_slo',
...
)
# this is the "usual" config object from django-saml2-auth
SAML2_AUTH = {
'DEFAULT_NEXT_URL': '/',
'PLUGINS': {
# use this package in lieu of DEFAULT signout plugin
'SINGOUT': ['SLO'],
}
# django_saml2_auth doesn't support these natively so the package injects them
'SIGNOUT_SLO': {
'CERT': <tbd>
'KEY': <tbd>
}
}
Microsoft广告FS
警告:ADFS SLO无法处理未签名的请求。这意味着您必须提供密钥和证书并上载
向ADFS转发方信任的证书。如果您不能(或不想)提供证书,请参阅
^{cd1>插件。这个插件将用户重定向到
idpinitiatedsignon
页,允许用户手动完成注销。在
在ADFS中使用此软件包时存在以下几个问题:
- 默认情况下,ADFS不提供NameID。SLO需要NameID(至少PySAML2要求)。在
- 默认情况下,ADFS不公开SLO端点。在
以下是解决这些问题的一种方法(但使用风险自负)。名称ID策略取自 this article。SLO公司 终结点取自this article。在
- 在
在SAMLConfig中,添加以下行:
^{pr2}$ 在 - 在
在ADFS索赔规则中,添加自定义规则(“使用自定义规则发送索赔”):
在c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"] => add( store = "_OpaqueIdStore", types = ("http://mycompany/internal/persistentId"), query = "{0};{1};{2}", param = "ppid", param = c.Value, param = c.OriginalIssuer );
- 在
在ADFS声明规则中,添加转换规则:
- 传入声明类型:
http://mycompany/internal/persistentId
(字面意思是,不要更改mycompany) - 传出声明类型:
NameID
- 传出名称ID格式:
Persistent Identifier
- 传入声明类型:
- 在
在中继方信任的
Properties
->;Endpoints
选项卡下,添加一个SAML注销端点:- 绑定:
POST
- 可信URL:您的ADFS端点,类似于
https://<my.adfs.com>/adfs/ls
- 响应URL:空
- 绑定:
- 在
在中继方信任的
在Properties
->;Endpoints
选项卡下
- 项目
标签: