OAuth2.0是啥

作者: 高大强19 | 来源:发表于2020-09-02 17:08 被阅读0次

    一.前言

    OAuth是一种安全相关的协议,用于用户授权第三方的应用程序访问用户的web资源,并不需要透露自己的密码。2007年1.0推出后迅速成为工业标准。OAuth2.0是全新的版本,不向下兼容1.0,但保留了与之前版本OAuth相同的整体架构。2.0关注开发者的易用性,提供web应用、手机、桌面应用等其他设备提供认证流程。2012年正式发布RFC6749.

    二.认证授权过程

    涉及三方:

    服务提供方

    用户

    客户端

    思想是在客户端与服务提供方之间设置一个授权层。其提供令牌(token)并且有权限范围和有效期。

    OAuth 2.0中,server将发行一个短有效期的access token和长生命期的refresh token。这将允许客户端无需用户再次操作而获取一个新的access token,并且也限制了access token的有效期。

    同意授权是关键。

    三.客户端的授权模式

    OAuth2.0定义了四种授权方式:授权码、简化、密码、客户端

    不管哪一种授权模式,都必须到系统备案,说明自己的身份,拿到2个身份识别码:客户端ID(client ID)和客户端秘钥(client secret)。

    1.授权码模式(authorization code)是功能最常用、完整、流程最严密的模式,特点是客户端的后台服务器与服务器提供商的认证服务器进行互动。第三方应用先申请一个授权码,然后再用该码获取令牌。授权码通过前端传送,令牌则是存储在后端,所有与资源服务器的通信都在后端完成。前后端分离,避免令牌泄露。

    以微信登录为例:

    1)A网提供链接其中包含回调链接,接受或拒绝请求后的跳转网址,用重定向302,Location

    2)跳转到微信URL,要求用户登录,询问是否同意授权给A网。同意则微信跳回到回调URL(redirect_uri参数指定),会回传一个授权码

    3)A网拿到授权码后,在后端,向微信请求令牌。

    https://xxx/oauth/token? client_id=CLIENT_ID& client_secret=CLIENT_SECRET& grant_type=authorization_code& code=AUTHORIZATION_CODE& redirect_uri=CALLBACK_URL

    client_id参数和client_secret参数用来让 微信 确认 A 的身份(client_secret参数是保密的,因此只能在后端发请求),grant_type参数的值是AUTHORIZATION_CODE,表示采用的授权方式是授权码,code参数是上一步拿到的授权码,redirect_uri参数是令牌颁发后的回调网址。

    4)微信收请求后,颁发令牌。向redirect_uri指定的网址,发送一段 JSON 数据。其中access_token字段就是令牌,refresh_token是刷新令牌。

    2.隐蔽式,response_type参数为token

    3.密码式,grant_type参数是授权方式,这里的password表示“密码式”

    4.凭证式,grant_type参数等于client_credentials表示采用凭证式。

    四. 更新令牌

    令牌的有效期到了,如果让用户重新走一遍上面的流程,再申请一个新的令牌,很可能体验不好,而且也没有必要。OAuth 2.0 允许用户自动更新令牌。

    这时候就用到refresh token 字段了,令牌到期前,用户使用 refresh token 发一个请求,去更新令牌。

    https://xxx/oauth/token?

      grant_type=refresh_token&

      client_id=CLIENT_ID&

      client_secret=CLIENT_SECRET&

      refresh_token=REFRESH_TOKEN

    grant_type参数为refresh_token表示要求更新令牌,client_id参数和client_secret参数用于确认身份,refresh_token参数就是用于更新令牌的令牌。

    验证通过以后,就会颁发新的令牌。

    相关文章

      网友评论

        本文标题:OAuth2.0是啥

        本文链接:https://www.haomeiwen.com/subject/irpwsktx.html