OAuth 2.0:在授权代码流中,谁最终将访问令牌交给我的web浏览器



我正在学习OAuth 2.0。

在OAuth 2.0中,术语"授予类型"指的是应用程序获取访问令牌的方式。

在隐式流中,授权服务器将把浏览器重定向回应用程序指定的redirect_uri,并在URL的片段部分添加一个令牌和状态。因此,我认为最终用户的web浏览器将获得access_token值。

然而,在代码流中,Auth服务器似乎会向我的网络浏览器提供一个临时代码,然后我的web浏览器向应用程序发送http请求,并附上此代码。然后,应用程序调用身份验证服务器的/oauth/token端点,用访问令牌交换临时代码,从而最终从身份验证服务器获得访问令牌。

那么故事到此结束了吗?

应用程序是否更进一步,将访问令牌提供给我的web浏览器?

我一直认为,为了能够与应用程序交互(在使用应用程序时向它发送越来越多的HTTP请求(,每个HTTP请求都会附加一个访问令牌,这样请求就可以有效地到达应用程序的端点。

但在代码流中,我作为最终用户,在完成OAuth代码流并开始与应用程序交互后,浏览器中似乎没有访问令牌?

申请者怎么知道我就是我呢?

浏览器不需要访问令牌,因为它不能用它做任何事情。浏览器理解或处理访问令牌的方式与理解和处理cookie的方式不同。

在隐式流中,令牌被发送到浏览器,但假设您有自己的应用程序在浏览器中运行(通常是单页应用程序(,该应用程序将读取令牌并将其附加到任何后续请求。或者,如果您使用OpenID Connect和ID令牌对用户进行身份验证,请使用该令牌的内容。

当浏览器将授权码发送到您的应用程序,并且您的应用将其交换为访问令牌时,您的应用应在该浏览器中为用户建立会话。然后,当同一用户向您的应用程序发出请求时,您可以使用分配给该用户会话的访问令牌。

通常,您的应用程序会使用此访问令牌来调用其他一些API,但如果您只需要该访问令牌来识别用户并允许用户访问您的应用,那么您真正需要的很可能是普通的旧会话,而不是OAuth。

最新更新