我正在一个 django 开发中工作,在单个 django 代码库下有3 个站点(siteA、siteB、siteC),每个站点都有自己的域和自己的数据库。由于单独的数据库,我为每个站点都有单独的用户。
我的问题是:是否有可能在这 3 个站点上创建单点登录?如果用户在siteA和siteB中注册但未在siteC中注册,在这种情况下,如果用户在SiteA中登录,将自动登录到siteB(因为它在两者中都注册)但不在siteC中。(如 stackexchange.com)
任何建议和帮助表示赞赏!
谢谢!
问问题
1045 次
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 回答