美文网首页
理解auth2.0协议

理解auth2.0协议

作者: 饿了爸 | 来源:发表于2019-08-06 23:20 被阅读0次

    1.1 什么是OAuth协议

    OAuth协议,是一种授权协议,不涉及具体的代码,只是表示一种约定的流程和规范。OAuth协议一般用于用户决定是否把自己在某个服务商上面的资源(比如:用户基本资料、照片、视频等)授权给第三方应用访问。此外,OAuth2.0协议是OAuth协议的升级版,现在已经逐渐成为单点登录(SSO)和用户授权的标准。

    1.2 适用场景

    用户不再需要注册大量账号
    用于单点登录
    用于分布式系统的权限控制

    1.3授权设计简单理解

    门禁授权系统为例

    第一步,门禁系统的密码输入器下面,增加一个按钮,叫做"获取授权"。快递员需要首先按这个按钮,去申请授权。
    第二步,他按下按钮以后,屋主(也就是我)的手机就会跳出对话框:有人正在要求授权。系统还会显示该快递员的姓名、工号和所属的快递公司。
    我确认请求属实,就点击按钮,告诉门禁系统,我同意给予他进入小区的授权。
    第三步,门禁系统得到我的确认以后,向快递员显示一个进入小区的令牌(access token)。令牌就是类似密码的一串数字,只在短期内(比如七天)有效。
    第四步,快递员向门禁系统输入令牌,进入小区。

    2.1 运行流程

    image.png

    (A)用户打开客户端以后,客户端要求用户给予授权。
    (B)用户同意给予客户端授权。
    (C)客户端使用上一步获得的授权,向认证服务器申请令牌。
    (D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
    (E)客户端使用令牌,向资源服务器申请获取资源。
    (F)资源服务器确认令牌无误,同意向客户端开放资源。

    2.2 四种授权模式

    2.2.1 授权码模式

    image.png

    (1)用户访问客户端,后者将前者导向认证服务器,假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。
    (2)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌:GET /oauth/token?response_type=code&client_id=test&redirect_uri=重定向页面链接。请求成功返回code授权码,一般有效时间是10分钟。
    (3)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。POST /oauth/token?response_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=重定向页面链接。请求成功返回access Token和refresh Token。

    2.2.2 简化模式

    image.png

    适用于公开的浏览器单页应用

    Access Token直接从授权服务器返回(只有前端渠道)
    不支持refresh tokens
    假定资源所有者和公开客户应用在同一个设备上
    最容易受安全攻击

    2.2.3用户名密码 Resource Owner Credentials

    image.png

    使用用户名密码登录的应用,例如桌面App
    使用用户名/密码作为授权方式从授权服务器上获取access token
    一般不支持refresh token
    假定资源拥有者和公开客户子啊相同设备上

    2.2.4 客户端凭证 Client Credentials

    image.png

    适用于服务器见通信场景,机密客户代表它自己或者一个用户

    只有后端渠道,使用客户凭证获取一个access token

    因为客户凭证可以使用对称或者非对称加密,该方式支持共享密码或者证书

    相关文章

      网友评论

          本文标题:理解auth2.0协议

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