gpt4 book ai didi

oauth - OAuth 2.0 承载 token 到底是什么?

转载 作者:行者123 更新时间:2023-12-03 04:26:17 29 4
gpt4 key购买 nike

根据RFC6750 -OAuth 2.0授权框架:不记名 token 使用,不记名 token 是:

A security token with the property that any party in possession of the token (a "bearer") can use the token in any way that any other party in possession of it can.

对我来说这个定义很模糊,我找不到任何规范。

  • 假设我正在实现授权提供程序,我可以为不记名 token 提供任何类型的字符串吗?
  • 可以是随机字符串吗?
  • 是否必须是某些属性的 base64 编码?
    应该对其进行哈希处理吗?
  • 服务提供商是否需要查询授权提供商才能验证此 token ?

最佳答案

Bearer Token
A security token with the property that any party in possession of the token (a "bearer") can use the token in any way that any other party in possession of it can. Using a bearer token does not require a bearer to prove possession of cryptographic key material (proof-of-possession).

承载 token 是由身份验证服务器为您创建的。当用户对您的应用程序(客户端)进行身份验证时,身份验证服务器就会为您生成一个 token 。承载 token 是 OAuth 2.0 中使用的主要访问 token 类型。持有者 token 基本上表示“授予此 token 的持有者访问权限”。

承载 token 通常是由身份验证服务器创建的某种不透明值。它不是随机的;它是根据授予您访问权限的用户和您的应用程序获得访问权限的客户端创建的。

例如,为了访问 API,您需要使用访问 token 。访问 token 的生命周期很短(大约一个小时)。您使用不记名 token 来获取新的访问 token 。要获取访问 token ,请将此不记名 token 以及您的客户端 ID 发送给身份验证服务器。这样,服务器就知道使用不记名 token 的应用程序与创建不记名 token 的应用程序是同一应用程序。示例:我不能只获取为您的应用程序创建的不记名 token 并将其与我的应用程序一起使用,它不会工作,因为它不是为我生成的。

Google 刷新 token 如下所示:1/mZ1edKKACtPAb7zGlwSzvs72PvhAbGmB8K1ZrGxpcNM

复制评论:我认为您提供的不记名代币没有任何限制。我唯一能想到的是允许多个是件好事。例如,用户最多可以对应用程序进行 30 次身份验证,并且旧的不记名 token 仍然有效。哦,如果有一个 6 个月没有使用,我会将其从您的系统中删除。您的身份验证服务器必须生成它们并验证它们,因此其格式取决于您。

更新:

承载 token 在每个内联操作 HTTP 请求的授权 header 中设置。例如:

POST /rsvp?eventId=123 HTTP/1.1
Host: events-organizer.com
Authorization: Bearer AbCdEf123456
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)

rsvpStatus=YES

上例中的字符串“AbCdEf123456”是不记名授权 token 。这是由身份验证服务器生成的加密 token 。使用操作发送的所有不记名 token 都具有问题字段,受众字段将发送者域指定为 https://形式的 URL。例如,如果电子邮件来自noreply@example.com,则受众为 https://example.com

如果使用不记名 token ,请验证请求是否来自身份验证服务器并且适用于发件人域。如果 token 未验证,服务应使用 HTTP 响应代码 401(未经授权)来响应请求。

不记名 token 是 OAuth V2 标准的一部分,并被许多 API 广泛采用。

关于oauth - OAuth 2.0 承载 token 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838183/

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