一次登录多个产品

时间:2014-01-29 08:44:34

标签: python django authorization server-side

有多个移动应用。 我希望人们使用一个应用程序使用相同的登录凭据登录到所有其他应用程序。

实施此方法的最佳方法是什么?

我正在考虑创建一个单独的授权服务器,它将在注册和登录时发出令牌/秘密。它将有一个验证API,移动应用服务器将使用它来验证请求。

3 个答案:

答案 0 :(得分:2)

有一个处理这种称为中央身份验证服务(http://www.jasig.org/cas)或CAS的协议。 CAS利用OAuth2协议提供管理单一登录过程的安全方式 - 用户拥有单一登录凭证,该凭证通过令牌和代理票证使用单个CAS身份验证服务器在各种应用程序中对用户进行身份验证。这是我工作的公司用于跨多个应用程序验证用户的程序(我们使用Java与Spring Security和Spring CAS)但是今年夏天我们用Django和内部公司API构建了一个概念验证,我们在其中实现了CAS程序使用Django应用程序 - Django通过我们运行的CAS服务器对用户进行身份验证,并将其作为有效的,经过身份验证的Django用户返回。为此,我们使用了django-cas中间件和自定义后端库,可在此处找到:https://bitbucket.org/cpcc/django-cas/overview

如果您希望通过跨多个应用程序的单点登录来处理用户身份验证,那么CAS肯定是要走的路 - 这就是CAS首先创建的原因。使用CAS的学习曲线可能有点陡峭,但django-cas做得很好,可以很容易地在Django项目中设置CAS。

答案 1 :(得分:1)

  1. 首先检查OAuth是否可以适应使用它,这将为您节省大量工作。当然,所有服务和应用程序都必须与某些后端网络服务器通信才能同步发给应用程序的令牌。

  2. 半安全/可能可滥用的解决方案:具有对称密码加密的cookie,网页(和应用程序?)持有并使用它进行不同网络服务的授权(再次必须通过授权服务验证cookie以进行授权)知道用于加密cookie的密码短语

  3. 我在内部系统上使用了#2方法,但我不确定是否可以在野外使用它 - 这可能会带来一些安全隐患。

答案 2 :(得分:0)

每个应用程序中的身份验证方法都连接到同一个Web服务进行身份验证。