OAuth 2,不能';人们不能用更好的名字来称呼“人”;访问“U令牌”;及;认证码;?

OAuth 2,不能';人们不能用更好的名字来称呼“人”;访问“U令牌”;及;认证码;?,oauth,oauth-2.0,Oauth,Oauth 2.0,我试图理解OAuth 2: 据我所知,“访问令牌”和“身份验证代码”实际上非常相似,因为它们代表最终用户的意愿。唯一的区别是access_令牌可以单独使用,而“身份验证码”必须与app_secret(rfc6749中的client_secret)一起使用 所以在我看来,如果他们有相似的名字,比如: “完整令牌”、“强令牌”或“超级令牌”表示“访问令牌”,因为它可以单独使用。它真的很强大,绝不能通过不安全的线路传输。(但可用于直接从浏览器发出请求) “认证码”的“半令牌”、“弱令牌”或“普通令牌

我试图理解OAuth 2:

据我所知,“访问令牌”和“身份验证代码”实际上非常相似,因为它们代表最终用户的意愿。唯一的区别是access_令牌可以单独使用,而“身份验证码”必须与app_secret(rfc6749中的client_secret)一起使用

所以在我看来,如果他们有相似的名字,比如:

  • “完整令牌”、“强令牌”或“超级令牌”表示“访问令牌”,因为它可以单独使用。它真的很强大,绝不能通过不安全的线路传输。(但可用于直接从浏览器发出请求)
  • “认证码”的“半令牌”、“弱令牌”或“普通令牌”,因为它必须与应用程序密钥组合。它可以通过非安全线路传输,但由于app_机密永远不应该发送到浏览器,因此永远不能从那里使用
因此,相应的授予类型名称将被调用:

  • “隐式授权类型”的“完整令牌授权类型”
    • 该术语意味着直接生成完整的_令牌并仅返回到浏览器(因为它是在重定向uri(uri的#-部分)的片段中返回的,而在浏览器发出重定向请求时,该片段不包括在内(因此,即使请求是非安全uri,它也永远不会公开)。然后,浏览器可以使用它提取数据,也可以将数据传输到应用程序服务器(如果应用程序使用TLS)
  • “授权码授权类型”的“半令牌授权类型”
    • 该术语表示生成了半个令牌,应用程序确保它到达应用程序服务器(不需要安全线路)。在应用服务器上,它与app_secret一起发送,以从授权服务器提取数据。(rfc6749建议首先用完整的_代币替换它,但在我看来这不是必要的。)

或者我遗漏了其他差异吗?

授权码不像您的摘要所暗示的那样像访问令牌。特别是,这并不准确:“唯一的区别是访问令牌可以单独使用,而“身份验证码”必须与应用程序密钥一起使用”

在OAuth2.0中,获取授权和使用授权是非常不同的,涉及不同的参与者,他们可以获得不同类型的信息。授权代码是与授权服务器握手过程的一部分,以获得访问受保护资源的权限。然后将生成的访问令牌发送到资源服务器(不需要知道任何客户端机密或其他凭据)以代表用户访问资源

所以他们实际上是完全不同的。

你的理论

完整令牌、半令牌、强令牌、超级令牌

存在的原因是您误解了
访问\u令牌
授权\u代码

Authorization\u code
是一种短命的令牌,交换后可获得
Access\u令牌
。授权服务器生成授权代码并发送回客户端,以对资源所有者的凭据保密。客户端稍后将此授权代码交换为访问令牌。一旦您获得访问令牌,授权码将过期,并且您不能为同一授权码颁发另一个访问令牌

要访问您的API,您需要在每个请求的头中传递access_令牌。您不能使用授权代码访问您的API。这就是授权代码不是
半\u令牌的原因

类似地,完整令牌、强令牌、超级令牌也没有意义,因为我们只有一个访问令牌


请参见

啊,如果授权服务器和资源服务器是相同的,那么可以像我一样查看它?!