姜戈和希伯勒



我正在研究在Django部署中使用Shibboleth的选项。从我发现的情况来看,东西看起来有点稀疏。有人能对以下问题发表评论吗?

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

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

提前感谢您的帮助!

我建议使用Shibboleth Native SP (apache mod_shib)。它经过了良好的测试,拥有庞大的用户基础,并且非常稳定。

我快速看了一下django shibboleth模块,它似乎依赖于mod_shib,并且不做任何SAML自己。在这方面,该模块非常简单,并且可能工作得很好。

我还没有看到任何完整的(或大部分完成的)python SAML2实现,也没有一个是正在进行的项目。 xml安全和加密需求在python中是一个痛苦的问题,这可能导致库的缺乏。

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

虽然我没有使用Django+Shibboleth的经验,但我有一些使用"plain" Shibboleth的经验。

如果你的Apache已经正确配置了mod_shibboleth,那么将它集成到web应用程序中就相对简单了。查看djjango_shibboleth模块,你会发现它并没有包含那么多代码。

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

可以使用Django -shibboleth模块从IdP获取属性,并将其映射到Django认证系统中的用户。大部分工作是由Shibboleth自己完成的,只需要少量的代码来进行映射。

包装可从这里买到。

linuxsoft.cern.ch/内部/回购/ai6-stable/x86_64/操作系统/包/django - shibsso - 0.1 - 1. - noarch.rpm

或此处的源

linuxsoft.cern.ch/内部/回购/ai6-stable/源/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。

要解决这个问题,您需要在配置中添加以下内容:

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

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

相关内容

  • 没有找到相关文章

最新更新