OAuth2.0

作者: 大路无疆 | 来源:发表于2017-07-30 15:24 被阅读0次

    OAuth是一个用于授权(authorization)的开放网络标准,在全世界得到广泛应用,最新版本是2.0。 Facebook, Google, 鹅厂等都有基于OAuth的开放授权平台。它是为了解决什么问题而产生的呢?下面来举个栗子:

    我们有一个文件服务系统,用户登录之后可以上传自己的文件。现在有一个打印应用提供一个在线打印文件的服务。但是每个用户只能打印自己的文件,只有符合隐私级别的文件才能被打印。那么打印服务和文件服务之间是怎么沟通,获取到用户可以打印的文件呢?过去,文件服务系统会将用户数据共享给打印服务,这会带来一系列问题,同时带了管理用户身份信息的复杂度。OAuth标准可以在不共享身份信息的情况下,给在线打印服务进行授权,获取可以打印的文件。

    OAuth2.0专用名词

    resource owner - 资源拥有者,上面例子中上传照片的人

    resource server - 根据access token返回申请资源

    client - 申请使用资源的第三方系统

    authorization server - 颁发access token的服务, 可以与resource server部署在一起

    OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。"客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。"客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。

    OAuth 2.0的运行流程

    来源RFC 6749

    (A)用户打开客户端以后,客户端要求用户给予授权。

    (B)用户同意给予客户端授权。

    (C)客户端使用上一步获得的授权,向认证服务器申请令牌。

    (D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

    (E)客户端使用令牌,向资源服务器申请获取资源。

    (F)资源服务器确认令牌无误,同意向客户端开放资源。

    四种授权模式

    客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式:

    授权码模式(authorization code)

    简化模式(implicit)

    密码模式(resource owner password credentials)

    客户端模式(client credentials)

    不同的认证方式,决定了客户端与服务提供商之间的交互方式,具体的流程细节请参考RFC 6749,不同的厂商针对业务需求实现的也不尽相同,自己搭建OAuth认证授权中心可以参考Spring Security的OAuth2.0实现。

    相关文章

      网友评论

          本文标题:OAuth2.0

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