API安全性与缓存机制OAuth2-使用REST JSON XML和JAX-RS构建微服务,大数据(二)

OAuth2安全标准
OAuth2是一个授权访问的标准,通过使用OAuth协议的HTTP访问授权资源;

OAuth2.0是怎么解决的呢?

正常情况下,要访问用户甲的QQ中的照片, 需要将账号和密码发送到QQ空间的认证服务器验证身份. 但是第三方应用要访问, 怎么办呢?或者说用户乙想要看用户甲的照片,怎么办呢?

给第三方应用paint一个临时密码,过期作废,而且这个密码的访问权限可由我随时取消.这样就足够安全了.
这个临时密码就是access_token. 当然发放access_token的方法就多种多样了,这些方法叫做授权模式

  • 授权模式一共四种:
  1. 客户端模式(Client Credentials)
  2. 密码模式(User Credentials)
  3. 简化模式(Implicit)
  4. 授权码模式(Authorization Code)

OAuth2定义了四种角色

  1. 资源拥有者:一般是自己
  2. 资源服务器:托管受保护的数据的服务器(比如个人信息)
  3. 客户端:请求访问资源服务器的应用
  4. 授权服务器:负责向客户端颁发访问令牌的服务器,客户端可以带着令牌去请求资源服务器

令牌

令牌是由授权服务器生成的随机字符串,在客户端请求时发出;

  1. 访问令牌(Access Tokens)
    允许第三方应用程序访问用户数据,由客户端作为参数发送,生存时间由授权服务器定义,另外必须维持保密性,一般对用户不透明,可能被客户端网站储存起来(存在session中也不一定)
  2. 刷新令牌
    随着访问令牌发出,但不同,不是每次请求都发送,仅用于发送到授权服务器;
    在这里插入图片描述

注册成为客户端

如果你想要使用OAuth2从资源服务器上拿到数据,就必须注册成为授权服务器客户端,就是说,客户端要拿到授权服务器的访问令牌,OAuth2协议定义客户端必须指定参数和由授权服务器返回的参数。

  1. 客户端注册
应用名称:QQ
重定向URL:用于接收客户端授权码和访问令牌
授权类型:客户端用到授权类型
JavaScript源(可以不用)
  1. 授权服务器响应
客户端ID:唯一随机字符串
客户端密钥:必须保密密钥

授权码

何时用到?需要获得长时间的访问令牌,授权码可以使用刷新令牌进行续订;

)

  • 隐式授予授权码
    何时使用?使用JS的浏览器运行中,那么隐式授予不允许颁发刷新令牌;
    如果授权访问,授权服务器将你重定向到网站,并在URL中携带访问令牌,如。http://jf-server.top#access_token=MDKADFKAJKJKJJ;
    在这里插入图片描述

  • 资源拥有者密码凭据授予
    在这里插入图片描述

  • 客户端凭据授予
    在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/weixin_44313584/article/details/111146781