我们有一个第三方网站,希望使用OAuth或OpenID身份验证来根据我们的用户数据库对用户进行身份验证。我的任务是实现所述提供程序,我希望使用Flask在Python中进行,但是我在实际的身份验证工作流程中遇到了一些困难。
我们在这里寻找的是一个基本的身份验证机制。当用户想要使用第三方网站时,他们输入用户名和密码,我们告诉第三方网站“是的,他们已被授权”。由于第三方网站的限制,此交换必须使用OAuth或OpenID进行 - 我们不能做一些简单的事情,例如让他们在表单中输入用户名和密码,将其提交给我们,以及我们发送回json对象或表示成功/失败的事物。
以下是我对目前工作流程的理解(请更正任何错误的理解):
这是我迷路的地方。客户端如何知道用户是否成功通过身份验证?在重定向用户时,提供程序是否在请求中发送了指示此内容的内容?如果是这样,什么?或者它是其他东西 - 也许在用户返回客户端时还会执行其他步骤?
我的主要出发点是这个页面:https://flask-oauthlib.readthedocs.io/en/latest/oauth2.html#,其中讨论了很多关于客户端模型和Grant Token模型以及Bearer Token模型等的内容 - 这些内容是从哪里来的?鉴于我的基本需求 - 例如,我不需要跟踪任何授权数据,只需要身份验证 - 我可以绕过那里显示的任何内容吗?
编辑:所以经过一些挖掘后,它看起来像是“资源所有者密码凭证授权”,如下所述:https://tools.ietf.org/html/rfc6749#section-4.3可能就是我要去的地方。使用这种类型的授权,工作流程似乎是:这个工作流程听起来很简单(假设这是我们的第三方供应商的想法),而且正是我想要的,但让我仍然想知道关于客户端模型和多种令牌类型等的所有内容是什么在示例代码中。
答案 0 :(得分:-1)
我们使用OAuth进行身份验证。请在此处阅读On a high level, how does OAuth 2 work?
回到您的场景我认为第三方站点正在服务器上运行,该服务器检查用户是否经过身份验证。简单来说,如果您登录gmail并在同一浏览器中打开新标签并访问gmail.com,则无需再次登录,gmail会直接打开您的收件箱。这里发生了什么?验证浏览器cookie中的会话cookie /令牌,然后直接打开gmail收件箱。您可以在Chrome的网络选项卡中检查活动重定向(第二次访问gmail.com时,控制台窗口中的保持网络选项卡打开)
同样将您的第三方网站视为gmail.com,它将验证用户是否已登录。您不需要维护任何用户数据库来验证用户。 Oauth将负责登录,然后根据请求将用户发送到正确的URL。