姜戈和Shibboleth

问题描述 投票:0回答:3

我正在研究在 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 解决方案吗?

预先感谢您的帮助!

python django shibboleth saml-2.0
3个回答
9
投票

我建议使用 Shibboleth Native SP (apache mod_shib)。它经过充分测试,拥有庞大的用户群,并且非常稳定。

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

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

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


3
投票

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

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

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


2
投票

提供了

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

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

© www.soinside.com 2019 - 2024. All rights reserved.