Python 一次登录多个产品

Python 一次登录多个产品,python,django,authorization,server-side,Python,Django,Authorization,Server Side,有多个移动应用程序。 我希望使用一个应用程序的用户使用相同的登录凭据登录到所有其他应用程序 实现这一点的最佳方法是什么 我想创建一个单独的授权服务器,在注册和登录时发布令牌/机密。它将有一个验证API,移动应用服务器将使用该API来验证请求。每个应用程序中的身份验证方法都连接到相同的Web服务进行身份验证 首先检查一下OAuth是否适合使用它,这样可以节省大量的工作。当然,所有的服务和应用程序都必须与一些后端网络服务器进行通信,以同步发给应用程序的令牌 半安全/可能滥用的解决方案:使用网页(和应

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

实现这一点的最佳方法是什么


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

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

  • 首先检查一下OAuth是否适合使用它,这样可以节省大量的工作。当然,所有的服务和应用程序都必须与一些后端网络服务器进行通信,以同步发给应用程序的令牌

  • 半安全/可能滥用的解决方案:使用网页(和应用程序?)持有的对称密码加密cookie,并将其用于不同网络服务的授权(同样,这些服务必须使用知道用于加密cookie的密码短语的授权服务验证cookie的授权)


  • 我已经在内部系统上使用了方法2,但我不确定是否建议在野外使用它-这可能会带来一些安全风险。

    有一个协议来处理此问题,称为中央身份验证服务(),或CAS。CAS利用OAuth2协议提供了一种安全的方式来管理单一登录过程——用户拥有单一登录凭据,该凭据通过令牌和代理票证使用单一CAS身份验证服务器跨各种应用程序对用户进行身份验证。这是我工作的公司用于跨多个应用程序验证用户身份的过程(我们使用Java和Spring Security以及Spring CAS)然而,今年夏天,我们用Django和一个公司内部API构建了一个概念验证,在这个API中,我们用Django应用程序实现了CAS过程——Django通过我们运行的CAS服务器验证了用户,并将他们作为有效的、经过验证的Django用户返回。为此,我们使用django cas中间件和自定义后端库,可在以下位置找到:


    如果您希望通过跨多个应用程序的单点登录来处理用户身份验证,那么CAS无疑是一条必由之路——这就是创建CAS的最初原因。使用CAS的学习曲线可能有点陡峭,但django CAS做得很好,使得在django项目中使用CAS变得很容易。

    IMHO您应该看看单点登录模式。