【问题标题】:Validate SAML2 assertion (as password replacement) in Python在 Python 中验证 SAML2 断言(作为密码替换)
【发布时间】:2020-03-02 18:18:08
【问题描述】:

我需要在 Python 中验证 SAML2 断言(作为密码替换)。 (大图:Shibboleth Idp SOGo SP 将断言响应传递给我的模块(基于 pam-script))

我试图保证事情安全,但尽可能简单/易于管理。 SIGNXML Python库似乎是一个非常好的 起点,但 AFAIK 有一些拼图缺失的部分......

附:我对以下任何主题都不陌生,但也不是日常的主力程序员...... 因此,我将不胜感激任何进一步的(“一般”)建议,从一开始就采取正确的方向......

所以我的问题是:

  1. 推荐的方式/库(只需(处理/解密来自 IdP 的加密断言回复?

  2. 如何延长断言有效性时间范围(通过定义的宽限/偏差时间段)和/或禁用时间有效性 完全检查(用于非生产环境)?

  3. 为“uid”、SP 的 EntityId 等属性解析 SAML2 断言的首选方法。 (lxml.etree 对我来说似乎是正确的方式,但是......)

  4. 是否需要进一步考虑以确保验证过程中的完整性/安全性?

非常感谢您提供任何帮助/建议/示例!

最好的问候, 卢布斯

【问题讨论】:

    标签: python saml-2.0 idp


    【解决方案1】:

    您可以查看https://github.com/onelogin/python-saml

    ,而不是自己实施符合 SAMLv2 标准的 SAML ServiceProvider

    【讨论】:

    • 感谢您的回复,我知道这个工具包。但如上所述(对不起我的英语;)我没有尝试实现 ServiceProvider,而只是解码/验证现有/工作 SP 传递给我的应用程序的 SAML 断言以供进一步使用。
    • 'verify SAML assertion',并且您还提到要解密断言->您需要来自 IdP 的证书进行签名验证,并且您需要 SP 的私钥来解密断言.. ..这基本上是一个安全漏洞。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2017-04-28
    • 2021-04-28
    • 2011-01-29
    相关资源
    最近更新 更多