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选项卡下

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储