试图了解OAuth2流程

时间:2012-07-20 04:53:35

标签: oauth-2.0

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

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

那么,现在他们已经拥有了,并且他们正在通过SSL,为什么需要授权令牌呢?然后,在那之后,为什么需要授权代码?

另外,为什么刷新令牌?

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

最后,对于不受最终用户保护的资源,所有这些都需要吗?

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

  1. 为什么要使用身份验证令牌?
  2. 为什么要使用授权码?
  3. 为什么要刷新令牌?
  4. 为什么不将客户端凭据用于非受保护资源(或者我们可以)?
  5. 为什么两者一个身份验证令牌和代码? (我想这可以通过1和2来回答。)

1 个答案:

答案 0 :(得分:3)

对于necroposting抱歉,我希望这对某人有用,以备将来参考。

首先,他们被称为Authorization CodeAccess Token

  1. Access Token是表示访问权限的字符串 资源
  2. Authorization Code表示资源的授权 所有者给予客户。在大多数情况下,资源所有者是 拥有服务器上某些资源的最终用户。客户端 要访问这些资源,所以他需要授权 用户。
  3. Refresh Token用于续订过期的Access Tokens。 Usualli一个访问令牌的生命周期为几分钟,而刷新则在几个月/几年/之后到期。你使用访问的;当它们变老时,您使用刷新令牌来获取新的访问令牌。 请注意,在OAuth1中,只有一种类型的令牌也持续了数月。引入了短期令牌来提高协议安全性。
  4. 我想我没有承诺。如果资源不受保护,请不要使用OAuth!无论如何,当您认为客户 资源所有者(Client Credential Grant)时,可以使用here an example
  5. 参见1.和2.它们不同,也可以通过两个不同的渠道发送(但我还没有找到使用不同的渠道)。
  6. 简而言之,当客户端拥有授权码时,他对授权服务器(AS)说:“ehi,资源所有者说我可以访问资源!”和AS为客户端提供访问令牌。现在他有了令牌,客户端进入资源服务器:“授权服务器说我可以访问资源,查看我的令牌”并获得资源。

    请注意,有4个流程,每个流程使用不同类型的授权授权,其中只有一个是授权代码。这都是滔滔不绝的话。 关于该机制,首先阅读this (a little obsolete) introduction,然后再阅读RFC 6749,请记住这些事项。

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