Django对外部SSO进行身份验证

时间:2017-02-03 16:51:25

标签: django django-views

如果这里的措辞有点奇怪,请原谅我。我对python有相当多的经验,但我对Django很新,并且仍然试图让我的海边。

我在新工作中继承了前系统管理员的PHP网站,我想将其重新编写为django应用程序以简化/清理代码。

PHP站点使用带有.htaccess apache模块的Pubcookie文件进行身份验证(以及php代码中的一些基本检查,以确保用户检出授权用户的数据库,但是部分我不太关心),看起来像这样:

AuthType SecureID
require valid-user
PubcookieAppID "name of the app"

在我的apache配置中,我有各种pubcookie定义。

LoadModule pubcookie_module /usr/lib/apache2/modules/mod_pubcookie.so
PubcookieGrantingCertFile /usr/local/pubcookie/keys/pubcookie_granting.cert
PubcookieSessionKeyFile /etc/ssl/private/akey.pem
PubcookieSessionCertFile /etc/ssl/certs/acert.pem
PubcookieLogin https://weblogin.domain.com/
PubcookieLoginMethod POST
PubcookieDomain .domain.com
PubcookieKeyDir /usr/local/pubcookie/keys/
PubcookieAuthTypeNames ADUserID null SecurID

我的问题是......我如何在python端实现这种东西?我查看过使用RemoteUserMiddlewarePersistentRemoteUserMiddleware

但我发现的大部分信息并没有详细说明如何将您的应用实际指向正确的登录页面。官方文档似乎停止在django项目的settings.py文件中添加中间件下的中间件。

它还提到weblogin.domain.com由另一个我无法直接访问的群组处理,而不是我的服务器之一,所以我无法真正做到在那里捅。

我意识到这是......非常广泛,但任何可以指出我正确方向的信息都会受到赞赏。

在一个理想的场景中,我希望能够将不同的视图限制为不同的authtypes,但我很乐意让任何明智的工作。

1 个答案:

答案 0 :(得分:0)

所以,为了它的价值。答案是正常使用pubcookieapache。然后按预期使用RemoteUserMiddlewarePersistentRemoteeUserMiddleware。事实证明,你不必处理中间件的任何外部配置,它只是输入什么东西。

最后,我真的遗失了这篇文章,可以使用apache/pubcookie代码中的request.META库来访问来自django身份验证的信息