在Play框架和Django之间共享会话

4

我该如何创建一个单点登录应用程序,使我能够在我的网站的不同部分之间移动。我的网站的一部分使用Play框架,另一部分使用Django。我的单点登录知识非常有限,请多多指教 :)

3个回答

3
根据Mandubian所说,最好的选择是拥有一个中央服务,提供认证令牌,所有应用程序都能识别并用于验证用户。这样的服务示例是CAS,如果像你所说你没有SSO方面的经验,我建议你阅读相关内容,了解它应该如何工作。
警告:身份验证和授权是应用程序的关键部分,尤其是Web应用程序。我建议不要实现自己的解决方案,否则你可能最终会被黑客攻击并遇到问题(除非应用程序在Intranet内,风险存在但通常更容易处理)。尝试使用现有解决方案,例如CASJOSSO

在使用开源认证和授权解决方案时,更有可能被黑客攻击。除非您引起了特别的注意,否则没有人会花费时间攻击一个网站,而有数千万个网站都在使用相同的开源代码库工作。 - Vladimir Prudnikov
1
另一方面,由于它们容易受到攻击,因此它们更经常地获得安全更新。你自己的解决方案可能很薄弱,直到为时已晚才会知道。 - Pere Villega

1
一个非常简单的解决方案是在您的域上使用可以被Play!和Django读取的cookie。该cookie可以保存一个临时令牌,两个应用程序可以在共享的数据库中检查该令牌,以防用户尚未登录该应用程序。

1

如果您使用标准的SSO机制,它应该由机制本身来管理...
Web服务器(Django或Play)应将用户重定向到SSO服务器的身份验证页面。 SSO服务器生成一个令牌并将其发送回客户端(例如在cookie中),然后将客户端重定向到Web服务器(Django或Play),该服务器可以使用给定的令牌自行验证与SSO服务器的身份验证。此令牌随后在客户端和Web服务器之间用于整个身份验证会话。
因此,正如Arjan所解释的那样,您应该在cookie中共享此令牌,并且两个Web服务器(django和play)都应该能够管理它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接