如何围绕第三方servlet包装Plone身份验证?

时间:2012-08-28 20:40:45

标签: python authentication nginx plone

我们正在使用Plone来提供一些第三方中间件。

不幸的是,中间件有一个特定的servlet,它从Java applet调用,不进行任何类型的身份验证。我想关闭它并以某种方式包装身份验证,最好使用用户在Plone上的现有会话。

我的第一个想法是配置nginx(我们用作反向代理)来检查cookie,如果用户有一个有效的会话(沿this example行),则只检查代理。但是,如何针对Plone检查会话ID,因为它全部存储在Zope数据库中?

或者我们可以使用Plone python脚本,在验证后基本上将所有内容传递到后端,但我不知道该怎么做。

有什么建议吗?还是另类想法?

2 个答案:

答案 0 :(得分:3)

Plone使用auth_tkt会话cookie;任何支持此类会话cookie 的系统都配置了与Plone相同的秘密,可以验证cookie。

不幸的是,我无法找到auth_tkt的nginx实现;标准源自Apache mod_auth_tkt module,因此如果Apache是​​一个选项,您可以使用它。有关如何配置此类设置的详细信息,请参阅Plone & CGI single-sign-on using mod_auth_tkt

答案 1 :(得分:0)

你可以编写自己的Plone自定义附加组件,它提供了一个浏览器视图,在Plone过程中为你进行会话检查。如何从Nginx中获取这些内容对我来说是一个谜。

http://collective-docs.readthedocs.org/en/latest/views/browserviews.html

检查身份验证凭据是否有效

http://collective-docs.readthedocs.org/en/latest/sessions/login.html?highlight=login#extracting-credentials

有关Plone身份验证和Cookie的更多信息

http://collective-docs.readthedocs.org/en/latest/sessions/cookies.html?highlight=cookies#default-plone-cookies