我在单个django代码库下使用 3个站点( siteA,siteB,siteC )进行django开发,每个站点都有自己的域和自己的数据库。由于单独的数据库,我为每个站点分别拥有用户。
我的问题是:是否有可能为这3个网站创建单点登录?
如果用户在 siteA 和 siteB 中注册,但未在 siteC中注册 ,在这种情况下,如果用户登录 SiteA ,将自动登录 siteB (因为它已在两者中注册)但不在 siteC 中。 (比如stackexchange.com)
任何建议和帮助表示赞赏!
谢谢!
答案 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非常容易攻击。