18

我正在研究在 Django 部署中使用 Shibboleth 的选项。从我发现的情况来看,事情看起来有些稀疏。任何人都可以评论以下内容吗?

  • 是否有人使用 django_shibboleth 模块(参见http://code.arcs.org.au/gitorious/django/django-shibboleth/trees/1.1)?如果是这样,您对这个模块有什么经验?

  • 用于 Django(例如,django-saml2-sp)和一般 Python(例如,pysaml2)的 SAML 2 实现似乎有些实验性,并且包含的​​文档很少。有人知道 Django/Python 的稳定 SAML 2 解决方案吗?

提前感谢您的帮助!

4

3 回答 3

9

我会推荐使用 Shibboleth Native SP (apache mod_shib)。它经过了很好的测试,拥有庞大的用户群,并且非常稳定。

我快速浏览了django_shibboleth模块,它似乎依赖于 mod_shib,并且它自己不做任何 SAML。在这方面,该模块非常简单,并且可能运行良好。

我还没有看到任何完整的(或大部分完整的)python SAML2 实现,也没有一个是活跃的项目。xml 安全性和加密要求是 python 中的一个难题,这可能导致缺乏库。

[编辑 - 我将放弃其中的一部分] pysaml2 库有一些开发活动,粗略一看,看起来相当完整。它直接使用 xmlsec1 二进制文件进行签名和加密,因此不依赖任何过时的绑定。这可能是目前在 python 中直接使用 SAML2 的最佳选择。

于 2011-10-21T16:02:45.453 回答
3

虽然我没有使用 Django+Shibboleth 的经验,但我有一些使用“普通”Shibboleth 的经验。

如果您的 Apache 正确配置了 mod_shibboleth,那么将其与 Web 应用程序集成是相对简单的。查看 django_shibboleth 模块,您会发现它不包含那么多代码。

特别是,如果您已经运行了 mod_shibboleth,请不要使用第三方 SAML 2 库。这些带来了很多不必要的复杂性。

于 2011-10-21T13:46:27.960 回答
2

django-shibboleth 模块可用,可用于从 IdP 获取属性并将它们映射到 Django 身份验证系统中的用户。大部分工作由 Shibboleth 自己完成,映射只需要少量代码。

包装可从这里获得。

linuxsoft.cern.ch/internal/repos/ai6-stable/x86_64/os/Packages/django-shibsso-0.1-1.noarch.rpm

或来自这里的来源。

linuxsoft.cern.ch/internal/repos/ai6-stable/source/SRPMS/django-shibsso-0.1-1.src.rpm

按照 Shibboleth 说明设置本地 Shibboleth 服务提供商 (SP) 以与 IdP 一起使用。

在 http.conf 文件或 conf.d 中您自己的应用程序配置中,创建以下条目。

<Location /shibboleth>
    AuthType shibboleth
    ShibRequireSession On
    ShibUseHeaders On
   require valid-user
</Location>

这应该会导致 /shibboleth 的 URL 被定向到 IdP 登录页面。登录成功后,会返回一个404页面。

添加配置,将 app 替换为您的应用名称。

<Location "/">
    SetHandler mod_python
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE app.settings
    PythonDebug Off
</Location>

通过 /shibboleth URL 登录后,这将导致以下错误。当前 URL Shibboleth.sso/ADFS 与其中任何一个都不匹配。

要解决此问题,您需要将以下内容添加到配置中。

<Location /Shibboleth.sso>
    SetHandler None
</Location>

/var/log/shibboleth/transaction.log 应该告诉你释放了哪些属性。

于 2014-06-13T12:45:37.793 回答