2

所以,我正在使用 OAuth2 实现一个提供者。

我得到了客户申请client_id和client_secret的部分。这将它们唯一地标识给提供者。

那么,既然他们有了这个,并且他们正在使用 SSL,为什么需要授权令牌?然后,在那之后,为什么需要授权码?

另外,为什么要刷新令牌?

为什么我们不能只使用 client_id 和 client_secret?我确实得到了基于最终用户授权保护的资源,需要额外的授权。这很有意义。但为什么要使用身份验证令牌和代码?

最后,不受最终用户保护的资源是否需要所有这些?

所以,我想有 5 个不同的问题可以帮助我理解:

  1. 为什么是身份验证令牌?
  2. 为什么是授权码?
  3. 为什么要刷新令牌?
  4. 为什么不将客户端凭据用于不受保护的资源(或者我们可以)?
  5. 为什么要同时使用身份验证令牌和代码?(我想这可能会被 1 和 2 回答)。
4

1 回答 1

4

很抱歉发布了 necroposting,我希望这对某人将来的参考有用。

首先它们被称为Authorization Codeand Access Token

  1. Access Token是一个字符串,表示访问资源的权限
  2. Authorization Code代表资源所有者给予客户端的授权。在大多数情况下,资源所有者是拥有服务器上某些资源的最终用户。客户想要访问这些资源,所以他需要用户的授权。
  3. Refresh Token用于更新过期Access Tokens的。通常,访问令牌的生命周期为几分钟,而刷新在数月/年/无论如何之后到期。您使用访问权限;当它们变老时,您可以使用刷新令牌来获取新的访问令牌。请注意,在 OAuth1 中,只有一种类型的令牌也持续了数月。引入了短期令牌以提高协议安全性。
  4. 我想我没有理解。如果资源不受保护,请不要使用 OAuth!无论如何,当您认为客户端资源所有者时,可以使用客户端凭据授予(这里是一个示例
  5. 见 1. 和 2. 它们是不同的,它们也可以通过两个不同的通道发送(但我仍然没有找到不同通道的使用)。

简而言之,当客户端拥有授权码时,他对授权服务器(AS)说:“ehi,资源所有者说我可以访问资源!” AS 给客户端一个访问令牌。现在他有了令牌,客户端转到资源服务器:“授权服务器说我可以访问资源,看看我的令牌”,他得到了资源。

请注意,有 4 个流程,每个流程都使用不同类型的 Authorization Grant,其中只有一个是 Authorization Code。都是言辞。关于机制,首先阅读这个(有点过时的)介绍,然后再阅读RFC 6749,记住这些事情。

希望您现在有一个更清晰的想法。

于 2013-01-29T01:03:19.983 回答