为什么 oAuth 需要访问令牌?

问题描述 投票:0回答:1

平台有用户有userId,外部app也可以表示为有userId的用户。正如用户可以授予其他用户对其资源的访问权限(读取、写入等)一样,他们也可以使用应用程序来做到这一点。

那么为什么外部应用程序不能通过使用自己的用户 ID(API 密钥)和 HMAC 以及应用程序自己的秘密(或使用其私钥签署每个请求)来简单地通过平台验证其请求?用户可以通过访问与授予任何其他用户访问权限相同的控制面板来管理“oAuth”应用程序的权限/范围。

oAuth 拥有这个访问令牌有什么优势?我看到访问令牌或 JWT 的唯一优势是您可以跳过对授权服务器的 I/O 请求,例如使用功能而不是访问控制列表。但这不是不够安全吗——而且无论如何,如果您必须检查访问令牌撤销,您仍然需要执行相同数量的 I/O。

基本上我在问,为什么 oAuth 应用程序不能简单地跳过访问令牌,因为平台无论如何都知道什么应用程序在请求什么资源?

oauth-2.0 oauth jwt acl
1个回答
0
投票

authorization_code
流程中,是user允许第三方访问他们的信息。

客户代表用户,而不是自己。

假设您正在使用直接与 API 对话的桌面应用程序或 Web 应用程序。如果桌面应用程序中的凭据对每个已授予访问客户端访问权限的用户有效,那将是一个主要问题。

例如,我使用 Thunderbird,它使用 OAuth2 对 gmail 进行身份验证。 Gmail 发回一个访问令牌,限制 Thunderbird 只能访问 my 电子邮件,而不是所有其他曾经授予访问权限的电子邮件帐户。

© www.soinside.com 2019 - 2024. All rights reserved.