1


我正在一个 django 开发中工作,在单个 django 代码库下有3 个站点siteA、siteB、siteC),每个站点都有自己的域和自己的数据库。由于单独的数据库,我为每个站点都有单独的用户。

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

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

4

1 回答 1

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 很容易受到攻击。

于 2012-08-17T21:27:24.303 回答