Spring Security OAuth2根据授权码获取Token源码

本文详细介绍了Spring Security OAuth2中授权码流程的实现,从用户登录后的回调,到用户系统如何使用授权码换取Token,再到OAuth Server处理请求的源码解析,最后讨论了如何改造获取用户信息的方法,以提高验证效率。
摘要由CSDN通过智能技术生成

Spring Security OAuth2根据授权码获取Token源码

1、用户在认证中心登录完成后, 回调至redirect_url,并在 URL后携带授权码 格式为:URL?code=xxxx;

2、用户系统拿到授权码后发起获取token的请求

  • 请求路径: /oauth/token

  • 请求方法: POST

  • 请求Content-Type: application/x-www-form-urlencoded

  • 请求header: Authorization:Basic {base64Encoder(client_id+client_secret)}

  • 请求参数: grant_type=authorization_code,code={code}, redirect_uri={redirect_uri}

3、请求到达OAuth Server处理

org.springframework.security.oauth2.provider.endpoint.TokenEndpoint类中的postAccessToken方法处理请求

@RequestMapping(value = "/oauth/token", method=RequestMethod.POST)
public ResponseEntity<OAuth2AccessToken> postAccessToken(Principal principal, @RequestParam Map<String, String> parameters) 

参数介绍:

principal参数 :存储了 client 的相关信息img

parameters 参数:存储了请求参数

img

方法体内容(只保留关键步骤):

// 获取clientId
String clientId = getClientId(principal);
// 根据clientId查询client信息
ClientDetails authenticatedClient = getClientDetailsService().loadClientByClientId(clientId);
// 根据请求参数 + client信息创建TokenRequest
TokenRequest tokenRequest = getOAuth2RequestFactory().createTokenRequest(parameters, authenticatedClient);
// 格局授权类型和请求参数生成token
OAuth2AccessToken token = getTokenGranter
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值