所以,我正在使用OAuth2实现一个Provider .
我得到客户端申请client_id和client_secret的部分 . 这将它们唯一地标识给提供者 .
那么,现在他们已经拥有了,并且他们正在通过SSL,为什么需要授权令牌?然后,在那之后,为什么需要授权代码?
另外,为什么刷新令牌?
为什么我们不能只使用client_id和client_secret?我确实根据最终用户的授权保护资源,需要额外的授权 . 这很有道理 . 但为什么一个身份验证令牌和代码?
最后,对于不受最终用户保护的资源,所有这些都需要吗?
所以,我想这有5个不同的问题可以帮助我理解:
-
为什么要使用身份验证令牌?
-
为什么要使用授权码?
-
为什么刷新令牌?
-
为什么不将客户端凭据用于非受保护资源(或者我们可以)?
-
为什么同时使用身份验证令牌和代码? (我想这可以通过1和2来回答) .
1 回答
对于necroposting抱歉,我希望这对某人有用,以备将来参考 .
首先,它们被称为
Authorization Code
和Access Token
.Access Token
是表示访问资源的权限的字符串Authorization Code
表示资源所有者为客户端提供的授权 . 在大多数情况下,资源所有者是在服务器上拥有某些资源的最终用户 . 客户端需要访问这些资源,因此他需要用户的授权 .Refresh Token
用于续订过期的Access Tokens
. Usualli一个访问令牌的生命周期为几分钟,而刷新则在几个月/几年/之后到期 . 你使用访问的;当它们变老时,您使用刷新令牌来获取新的访问令牌 . 请注意,在OAuth1中,只有一种类型的令牌也持续了数月 . 引入了短期令牌以改善协议安全性 .我想我没有't undertand. If resources are not protected, just don'使用OAuth!无论如何,当您认为客户端 is 资源所有者(here an example)时,会使用Client Credential Grant .
参见1.和2.它们不同,也可以通过两个不同的通道发送(但我还没有找到使用不同的通道) .
简而言之,当客户端拥有授权代码时,他对授权服务器(AS)说:“ehi,资源所有者说我可以访问资源!”和AS为客户端提供访问令牌 . 现在他有了令牌,客户端进入资源服务器:“授权服务器说我可以访问资源,查看我的令牌”并获取资源 .
请注意,有4个流,每个流使用不同类型的授权 Grant ,其中只有一个是授权 Code . 这都是滔滔不绝的话 . 关于机制,首先阅读this (a little obsolete) introduction并再次阅读RFC 6749,记住这些事情 .
希望你现在有一个更清晰的想法 .