我在我的项目中设置了Django OAuth Toolkit,在该项目中,授权服务器与应用程序服务器(即account.example.com和app.example.com)分开。应用服务器使用授权流程重定向到帐户服务器;用户输入凭据登录到身份验证服务器,然后身份验证服务器将用户重定向回应用程序;以便该应用可以检索令牌。
以上流程目前按预期工作。如果我没有明确单击退出用户,然后应用程序退出(例如会话过期或浏览器cookie被清除),则将再次执行上述流程,并且不需要凭据,因为身份验证服务器仍然知道谁是谁。签名。
但是,在将用户显式退出应用程序时遇到麻烦。如果用户明确单击登录,则首先,必须撤消令牌,其次,身份验证服务器必须注销。实现此目标的正确方法是什么?就我而言,由于会话必须在身份验证服务器中销毁,因此我将无法使用Ajax注销用户。
因此,我一直在考虑将用户重定向到accounts.example.com/signout?token=${accessToken}&client_id=${clientID}
。但是,我不确定这是否是正确的方法。这些登出请求是如何与OAuth一起使用的?这是否意味着当我退出系统时,我需要始终提供访问令牌和客户端ID?