OAuth中授权代码的目的是什么

Nic*_*oft 5 api oauth server-side oauth-2.0

在oauth中,您使用客户端ID /密码进行请求以获取授权码。然后,您再次发出请求,以将授权代码交换为访问令牌。我的问题是:

为什么需要两步过程而不是首先获得访问令牌?如何使整个过程更安全?还是还有其他原因。

我说的是服务器端应用程序(例如php),它从远程服务器而不是javascript请求授权。

Jak*_*ski 7

可以通过单个请求来完成它——它被称为隐式流。有一个response_type设置为tokenor 的请求id_token token

使用访问代码(授权流程)而不是直接返回令牌的一般想法是对最终用户隐藏它们。第二个请求通常由后端服务器而不是浏览器完成。

您可以在此处找到更多详细信息:https : //auth0.com/docs/api-auth/which-oauth-flow-to-use

注意:有关完整答案,请阅读评论。

  • 但访问代码不会对用户(或用户计算机上的软件)隐藏。如果像浏览器插件这样的不良软件首先将访问代码交换为令牌怎么办?授权服务器使用redirect_url作为登陆页面,而是通过直接post请求将代码发布到客户端应用程序而不通过用户浏览器,这不是更安全吗? (2认同)
  • 访问代码不是 - 但是要将访问代码交换为令牌,您需要提供用户未知的 client_id 和 client_secret 。 (2认同)