当您可以直接提供令牌时,为什么还需要授权?

sta*_*lei 0 oauth-2.0

观看此视频,它在 OAuth2 中详细说明了客户端应用程序首先必须从授权服务器获得授权,然后使用该授权获取令牌,然后才能访问资源服务器。赠款的目的是什么?为什么不在用户使用他/她的用户名和密码登录后立即将令牌交给客户端?

Vil*_*kas 5

因为它更安全,对于某些应用程序类型。

您所描述的就是所谓的授权代码流。它通常用于“经典”Web 应用程序,其中只有后端需要访问资源服务器。访问令牌的授权代码交换发生在后端并且访问令牌永远不会离开它。交换只能进行一次,此外还需要客户端 ID 和机密(存储在后端)。

单页应用程序通常使用隐式流,其中访问令牌直接在 URL 中传递到前端。

在此处查看更多信息: IdentityServer Flows

编辑:问:“鉴于您必须获得授权才能获得令牌,我仍然不知道它如何更安全。为什么需要 2 件事而不是 1 件事来访问资源?如果有人窃取了令牌,他们无论如何都可以访问资源——stackjlei”

“窃取”访问令牌将独立于您的应用程序获取它的方式。但是,在后端窃取访问令牌比在前端要困难得多。

授权代码也通过前端传递到后端,但有人拦截和使用它的风险很小:

  1. 它只能兑换一次。
  2. 您需要 client-id 和 client-secret 才能交换它。客户端机密仅在后端可用。
  3. 通常,您的后端会立即将授权码交换为访问令牌。所以它的生命周期只有几秒钟。之后是否有人获得使用过的授权码并不重要。