2

我正在关注本关于 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

如果有人在 url 传输过程中获得了这个访问令牌,他们可以访问这个受保护的资源吗?

服务器如何知道请求是否来自最初请求访问令牌的客户端?

更新: 阅读这篇文章后HTTPS 标头是否已加密?我的困惑被清除了。我认为查询字符串在网络传输过程中没有加密。

4

2 回答 2

1

一般来说,我认为共识是 OAuth 2.0 是一种服务器端技术,所有访问令牌和通信都应使用 SSL 传输,因为承载令牌需要尽可能安全。

于 2013-05-06T21:11:44.833 回答
0

此外,您需要知道 OAuth 2.0 中有两种类型的流程
i)隐式授权流程- 这是用户登录到服务提供商并且他的浏览器获取访问令牌的流程。假设您有 X.com 并通过 Facebook 登录。一旦用户输入他的 FB 凭证,访问令牌就会发送到他的浏览器。

ii)授权码流程- 在此流程中(再次考虑上述情况),facebook 将向用户的浏览器传递一个授权码。如果有人以某种方式截获授权码,他无能为力。当使用有效的客户端凭据传递时,可以将授权代码交换为访问。因此,当用户登录时,他的浏览器会获得一个授权代码,该代码会传递到您位于 X.com 的服务器。从那里您将点击 FB 提供的代码令牌交换端点并将访问令牌返回到您的服务器!

授权代码流增加了另一层安全性,其中访问令牌仅对客户端 + 服务器可见,而对用户代理不可见。正如您自己发现的那样,令牌是通过 HTTPS 传递的。

于 2013-05-07T04:30:48.157 回答