Oauth 协议

1、什么是Oauth 协议 ?

OAuth 2.0 专注于简化客户端开发人员,他的最终目的是为第三方应用颁发一个有时效性的令牌token。使得第三方应用能够通过该令牌获取相关的资源。常见的场景就是:第三方登录。当你想要登录某个论坛,但没有账号,而这个论坛接入了如 QQ、Facebook 等登录功能,在你使用 QQ 登录的过程中就使用的 OAuth 2.0 协议。1.0协议每个token都有一个加密,2.0则不需要。这样来看1.0似乎更加安全,但是2.0要求使用https协议,安全性也更高一筹。

oauth 的核心思想就是要让第三方在不知道用户名密码的情况下完成鉴权,但是没有密码用户名组合根本不可能有效鉴权, oauth 实际的过程是一个李代桃疆的手法,在第一方用你的原始用户名和密码组合,生成另外一对名称密码组合,这个阶段叫做获取 code 和 state,这对组合送到第二方也就是你的资源所在地,同样较验一遍,如果合格,给你生成一个带有时效性的 access token, 第三方在有效期内拿着这个 access token 跳过第一方直接请求第二方的资源,至于为什么不直接返回 access token? 是因为如果使用 code 方式的话,服务器获得用户授权后通过 302 跳转到你的 callback URI 上,并在 url query 上带上用于交换 accesd token 的 code ,你在浏览器地址栏就可以看到这个code ,已经暴露有可能被不法应用,所以在 url 上直接返回 access token 是不安全的,而client拿到code以后换取access token是client后台对认证服务器的访问,并且需要clientID和client secret,不依赖浏览器,access token不会暴露出去


猜你喜欢

转载自blog.csdn.net/qiuchaoxi/article/details/80686121