OAuth2授权码模式和密码模式

授权码模式流程

  • 客户端请求第三方授权
  • 用户(资源所有者)同意给客户端授权
  • 客户端获取到授权码,请求认证服务器申请令牌
  • 认证服务器向客户端响应令牌
  • 客户端请求资源服务器的资源,资源服务器校验令牌合法性,完成授权
  • 资源服务器返回受保护资源

申请授权码

http://localhost:40400/auth/oauth/authorize?client_id=XcWebApp&response_type=code&scop=app&redirect_uri=http://localhost
  • client_id:客户端id,和授权配置类中设置的客户端id一致。
  • response_type:授权码模式固定为
  • code:scop:客户端范围,和授权配置类中设置的scop一致。
  • redirect_uri:跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)
    首先跳转到登录页面:
    在这里插入图片描述
    登录后,成功后会跳到授权页面

授权

在这里插入图片描述
点击Authorize,可以获得授权码

http://localhost/?code=R5A7yI

R5A7yI就是授权码。

申请令牌

post请求:  http://localhost:40400/auth/oauth/token

添加相关参数

  • grant_type:授权类型,填写authorization_code,表示授权码模式
  • code:授权码,就是刚刚获取的授权码,注意:授权码只使用一次就无效了,需要重新申请。
  • redirect_uri:申请授权码时的跳转url,一定和申请授权码时用的redirect_uri一致。
    在这里插入图片描述
    然后Authorization 选择Basic Auth,输入账号密码
    在这里插入图片描述

授权服务器返回token

在这里插入图片描述

  • access_token : 访问令牌,客户端携带此令牌请求资源服务器资源
  • token_type:有MACToken与BearerToken两种类型,两种的校验算法不同,RFC6750建议Oauth2采用Bearer
  • refresh_token:刷新token,使用此令牌可以延长访问令牌的过期时间
  • expires_in: 过期时间,单位为秒。
  • scope:范围,与定义的客户端范围一致。
  • jti:jwt的id

服务授权流程

在这里插入图片描述
携带令牌访问服务

消息头参数
Authorization Bearer+空格+token
在这里插入图片描述

密码模式

密码模式相比于授权码模式:不用授权码,可以直接用账号密码向授权服务器申请令牌

校验令牌

Get:http://localhost:40400/auth/oauth/check_token?token=获取到的token

刷新令牌

Post:http://localhost:40400/auth/oauth/token
参数
grant_type:固定为refresh_token
refresh_token:刷新令牌(注意不是access_token,而是refresh_token)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章