Django 和希博列思

o7jaxewo  于 2023-11-20  发布在  Go
关注(0)|答案(3)|浏览(101)

我正在调查在Django部署中使用Shibboleth的选项。从我所发现的来看,事情看起来有点稀疏。有人能对以下内容发表评论吗?

  • 有没有人在使用django_shibboleth模块(参见http://code.arcs.org.au/gitorious/django/django-shibboleth/trees/1.1)?如果有,你使用这个模块有什么经验?
  • 针对Django(例如,django-saml 2-sp)和Python(例如,pysaml 2)的SAML 2实现似乎有些实验性,并且包含很少的文档。有人知道针对Django/Python的稳定的SAML 2解决方案吗?

提前感谢任何帮助!

kninwzqo

kninwzqo1#

我推荐使用Shibboleth Native SP(apache mod_shib)。它经过了很好的测试,拥有庞大的用户群,并且非常稳定。
我快速查看了一下django_shibboleth模块,它似乎依赖于mod_shib,并且自己不做任何SAML。在这方面,该模块非常简单,并且可能工作得很好。
我还没有看到任何完整的(或大部分完整的)python SAML2实现,也没有一个是活跃的项目。xml安全性和加密要求是python的一个痛苦,这可能导致缺乏库。
[EDIT pysaml2库有一些开发活动,粗略一看看起来相当完整。它直接使用xmlsec1二进制文件进行签名和加密,因此不依赖任何过时的绑定。这可能是目前在python中直接使用SAML2的最佳选择。

olhwl3o2

olhwl3o22#

虽然我没有使用Django+Shibboleth的经验,但我有一些“普通”Shibboleth。
如果你的Apache已经正确配置了mod_shibboleth,那么将它与Web应用集成是相对简单的。查看django_shibboleth模块,你可以看到它并不包含那么多代码。
特别是,如果你已经运行了mod_shibboleth,不要使用第三方的SAML 2库,因为这会带来很多不必要的复杂性。

vfhzx4xs

vfhzx4xs3#

一个django-shibboleth模块可以用来从IdP获取属性,并将它们Map到Django auth系统中的用户。大部分工作都是由Shibboleth自己完成的,只需要少量的代码进行Map。
按照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替换为您的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与这些URL中的任何一个都不匹配。
要解决此问题,您需要在配置中添加以下内容。

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


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

相关问题