我不理解OAuth过程中第一步的概念:授权请求和授权授权。据我所知:
这个流程正确吗?我对用户在请求/授予授权方面的作用感到特别困惑。
发布于 2020-04-28 16:06:58
OAuth2 RFC非常广泛,涵盖了许多用例。由于您的问题是针对最常见的用例,即“登录与”按钮,我们将只讨论这一点。
让我们先把角色调好:
User:资源的所有者。例如,用户拥有一个电子邮件amey@example.com。
Client:请求用户拥有的信息的应用程序。这是托管按钮'Sign‘的应用程序。
资源:客户端请求的信息。客户可能需要访问您的电子邮件,您的出生日期和您的个人资料图片。
授权服务器:负责授权客户端请求访问用户资源的服务器。
资源服务器( Resource ):一种服务器,它保存用户的资源,并在显示有效的凭据时将其传输给用户。
OAuth2设置:希望访问资源服务器上承载的用户信息或资源的应用程序应首先向资源的授权服务注册。这一步骤所需的信息如下:
在成功地向授权服务注册时,客户端将收到一个clientId,它将在身份验证过程中发送到授权服务器。
假设用户想要向客户端(例如,client.com)证明他们是电子邮件amey@example.com的合法所有者。
步骤1:用户点击客户端网站上的“example.com登录”。我们叫它client.com吧。
步骤2:这会产生OAuth2身份验证流。将使用以下参数调用资源服务器的OAuth2 URL:
步骤3:授权服务器在向用户显示身份验证对话框之前对请求执行以下检查:
步骤4:授权服务器向用户提供一个身份验证对话框。在成功的身份验证中,授权服务器生成随机代码。还记得上面第二步的类型参数吗?type=code参数告诉授权服务器,客户端需要当前OAuth2身份验证请求的一次性授权代码。这不是最终的授权令牌。授权代码是短暂的,它们提供了一层额外的安全性,以保护资源服务器将授予的授权令牌。代码本身对对手没有任何用处。
步骤5:授权服务器将用户浏览器重定向到client.com的重定向URL,该重定向URL包含在上述步骤2的第一个OAuth2调用中,并将代码参数与状态参数一起附加到请求中(通常在OAuth2查询中)
步骤6:当client.com服务器接收到此请求时,它将调用授权服务器并发送从用户浏览器接收的授权代码。授权服务器使用授权令牌响应此请求,该令牌可用于根据约定的范围为用户请求信息。
步骤7: client.com的服务器调用将授权令牌附加到Resource,以获取用户的电子邮件地址。资源服务器再次向授权服务器发送请求,以验证令牌是否正确,所请求的资源是否在授权范围内。一旦获得授权服务器的授权,资源服务器就会将请求的资源发送给client.com的服务器,在本例中,用户的电子邮件地址(amey@example.com)。一旦client.com服务器从资源服务器接收到此信息,它就可以愉快地得出用户是该电子邮件地址的合法所有者的结论。服务器发送用于维护客户端会话的cookie或任何其他令牌,并允许用户使用client.com的应用程序。
步骤6和步骤7对用户隐藏。通信直接发生在客户端服务器和资源服务器之间。因此,当您等待客户端的响应时,一开始想象后端发生了什么可能会让人感到困惑。
您可以查看下面的图像,以获得流程的描述性流程:

图像属性:https://medium.com/@darutk/diagrams-and-movies-of-all-the-oauth-2-0-flows-194f3c3ade85
也将有助于阅读这篇博文,使之更清晰。
https://security.stackexchange.com/questions/230691
复制相似问题