首页 文章

试图了解OAuth2流程

提问于
浏览
1

所以,我正在使用OAuth2实现一个Provider .

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

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

另外,为什么刷新令牌?

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

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

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

  • 为什么要使用身份验证令牌?

  • 为什么要使用授权码?

  • 为什么刷新令牌?

  • 为什么不将客户端凭据用于非受保护资源(或者我们可以)?

  • 为什么同时使用身份验证令牌和代码? (我想这可以通过1和2来回答) .

1 回答

  • 3

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

    首先,它们被称为 Authorization CodeAccess 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,记住这些事情 .

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

相关问题