哪个更安全,为什么?
它们都是安全的,这取决于您使用它的环境。
当服务器可以直接发出访问令牌时,我看不出为什么在一个工作流程中添加了一个额外的步骤(交换令牌的授权代码)。
很简单。您的客户端不安全。让我们详细看看它。
考虑您正在开发一个针对 的应用程序Instagram API
,因此您注册您的应用程序Instagram
并定义API's
您需要的应用程序。Instagram
将为您提供client_id
和client_secrect
在您的网站上,您设置了一个链接,上面写着。“来使用我的应用程序”。单击它,您的 Web 应用程序应该对Instagram API
.
First
Instagram Authentication Server
使用以下参数发送请求。
1. `response_type` with the value `code`
2. `client_id` you have get from `Instagram`
3. `redirect_uri` this is a url on your server which do the second call
4. `scope` a space delimited list of scopes
5. `state` with a CSRF token.
您不发送client_secret
,您无法信任客户端(尝试使用您的应用程序的用户和/或他的浏览器)。客户端可以看到 url 或 java 脚本并client_secrect
轻松找到您的。这就是为什么你需要另一个步骤。
您收到一个code
和state
。这里code
是temporary
并且没有保存在任何地方。
然后你second
打电话给Instagram API
(从你的服务器)
1. `grant_type` with the value of `authorization_code`
2. `client_id` with the client identifier
3. `client_secret` with the client secret
4. `redirect_uri` with the same redirect URI the user was redirect back to
5. `code` which we have already received.
由于调用是从我们的服务器发出的,我们可以安全地使用client_secret
(这表明我们是谁),code
这表明用户已授权client_id
使用该资源。
作为回应,我们将有access_token