我正在关注OAuth2.0 https://developers.google.com/youtube/v3/guides/authentication
的本教程看起来很清楚OAuth2.0的工作原理。但是我在访问令牌部分有点混乱。
获取用户的访问令牌后,您的应用程序即可使用 该令牌代表该用户提交授权的API请求。 API支持两种指定访问令牌的方法:指定 访问令牌作为access_token查询参数的值:
www.googleapis.com/youtube/v3/videos?access_token=ACCESS_TOKEN
如果有人在网址传输过程中获取了此访问令牌,他们可以访问此受保护资源吗?
服务器如何知道请求是否来自最初请求访问令牌的客户端?
更新 在阅读这篇文章Are HTTPS headers encrypted?后,我的困惑被清除了。我认为查询字符串在网络传输过程中没有加密。
答案 0 :(得分:1)
一般来说,我认为共识是OAuth 2.0是一种服务器端技术,所有访问令牌和通信都应使用SSL传输,因为承载令牌需要尽可能保密。
答案 1 :(得分:0)
此外,您需要知道OAuth 2.0中有两种类型的流
i)隐式授权流程 - 这是用户登录服务提供商并且他的浏览器获取访问令牌的流程。假设你有X.com并通过Facebook登录。一旦用户键入他的FB凭证,访问令牌就会被发送到他的浏览器。
ii)授权代码流程 - 在此流程中(再次考虑上述情况),facebook会将授权代码传递给用户的浏览器。如果有人以某种方式拦截授权代码,他就无能为力。使用有效的客户端凭据传递时,可以交换授权代码以进行访问。因此,当用户登录时,他的浏览器会获得授权代码,该代码将传递到X.com上的服务器。从那里你可以点击FB提供的代码令牌交换端点,并获取返回给你服务器的访问令牌!
授权代码流添加了另一层安全性,其中访问令牌仅对客户端+服务器可见,而不对用户代理可见。当你自己想出来时,令牌会通过HTTPS传递。