gpt4 book ai didi

oauth - OAuth 授权代码和隐式工作流程有什么区别?何时使用每一项?

转载 作者:行者123 更新时间:2023-12-03 04:20:50 24 4
gpt4 key购买 nike

OAuth 2.0 有多个工作流程。我有几个关于两者的问题。

  1. 授权代码流 - 用户从客户端应用登录,授权服务器向应用返回授权代码。然后,应用程序将授权代码交换为访问 token 。
  2. 隐式授权流程 - 用户从客户端应用登录,授权服务器直接向客户端应用颁发访问 token 。

这两种方法在安全性方面有何区别?哪一种更安全,为什么?

当服务器可以直接颁发访问 token 时,我不明白为什么要在一个工作流程中添加额外的步骤(将授权代码交换为 token )。

不同的网站表示,当客户端应用程序可以保证凭据安全时,就会使用授权代码流。为什么?

最佳答案

access_token 是您调用 protected 资源(API)所需的内容。在授权码流程中,有 2 个步骤来获取它:

  1. 用户必须进行身份验证并向 API 使用者(称为“客户端”)返回代码
  2. API 的“客户端”(通常是您的网络服务器)将 #1 中获得的 code 交换为 access_token,并使用 client_idclient_secret
  3. 然后可以使用 access_token 调用 API。

因此,需要进行双重检查:拥有通过 API 呈现的资源的用户和使用 API 的客户端(例如 Web 应用程序)。两者都经过验证才能授予访问权限。请注意此处 OAuth 的“授权”性质:用户向应用程序授予对其资源的访问权限(通过身份验证后返回的 code),应用程序获取 access_token,并调用代表用户。

在隐式流程中,省略了步骤 2。因此,在用户身份验证后,将直接返回一个 access_token,您可以使用它来访问资源。 API 不知道谁在调用该 API。任何拥有 access_token 的人都可以,而在前面的示例中,只有网络应用程序可以(它的内部结构通常无法被任何人访问)。

隐式流程通常用于不建议存储客户端 ID客户端 secret 的场景(例如设备,尽管很多人还是这样做)。这就是免责声明的意思。人们可以访问客户端代码,因此可以获得凭据并假装成为资源客户端。在隐式流程中,所有数据都是 volatile 的,并且应用程序中没有存储任何内容。

关于oauth - OAuth 授权代码和隐式工作流程有什么区别?何时使用每一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16321455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com