Django和Shibboleth

2024-05-16 11:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在调查在Django部署中使用Shibboleth的选项。从我发现的情况来看,事情看起来有些稀少。有人能评论一下吗?

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

  • Django(例如Django-saml2-sp)和Python(例如pysaml2)的saml2实现似乎有些实验性,几乎没有文档。有人知道Django/Python的稳定SAML 2解决方案吗?

提前感谢您的帮助!


Tags: 模块djangoorghttp部署选项评论情况
3条回答

我建议使用Shibboleth本地SP(apache mod_shib)。它经过了很好的测试,拥有庞大的用户群,而且非常稳定。

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

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

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

django shibboleth模块可用,可用于从IdP获取属性并将其映射到django auth系统中的用户。大部分工作是由Shibboleth本身完成的,映射只需要少量代码。

包装可以从这里买到。

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

或者是这里的消息来源。

linuxsoft.cern.ch/内部/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页。

添加配置,用应用程序的名称替换应用程序。

<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应该告诉您释放了哪些属性。

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

如果您的Apache已经正确配置了mod_shibboleth,那么将它与web应用程序集成就相对简单了。查看django_shibboleth模块,您可以看到它不包含那么多代码。

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

相关问题 更多 >