单个标志在多个django网站上

时间:2012-08-17 20:42:25

标签: python django single-sign-on django-sites


我在单个django代码库下使用 3个站点 siteA,siteB,siteC )进行django开发,每个站点都有自己的域和自己的数据库。由于单独的数据库,我为每个站点分别拥有用户。

我的问题是:是否有可能为这3个网站创建单点登录? 如果用户在 siteA siteB 中注册,但未在 siteC中注册 ,在这种情况下,如果用户登录 SiteA ,将自动登录 siteB (因为它已在两者中注册)但不在 siteC 中。 (比如stackexchange.com)

任何建议和帮助表示赞赏! 谢谢!

1 个答案:

答案 0 :(得分:3)

最终的解决方案是:OAuth

但如果你喜欢捷径,在将OAuth集成到所有这些Django网站时,你可以:

  

网站A:肯,约翰

     

网站B:Ken,Joh

     

网站C:约翰

我们有两个站点,主站点使用站点B的一些资源,但它必须是站点B上的用户。但是这两个站点不同步用户。因为OAuth是一个痛苦的整合,我们这样做:

1. Ken login through Site A.
2. As soon as he hits "login", he's redirected to login to Site B and C through iframe login (submit the auth login requests through HTTPS).

3. The iframe login will return cookies of the site trying to login
     - site B
     - site C
4. Since Ken is not a user of Site C, there is no cookies return from Site C.
5. After two iframe logins, you are back to Site A and at this moment, as authenticated user of Site A, ken has at most two cookies:
    - site A
    - site B

这是一种捷径但非常不安全。当我说iframe登录时,我并不是说你会看到一个带有登录表单的iframe。请求将通过请求发送。

这是不安全的,因为用户必须使用相同的加密密码:/并且传递cookie非常容易攻击。