SpringBootSecurity学习(24)前后端分离版之OAuth2.0 应用登记

应用登记

一个应用要求 OAuth 授权,必须先到对方网站登记,让对方知道是谁在请求。举个例子,下面是github的登记页面:

  • https://github.com/settings/applications/new

file

下面我们来自己做一个简单的应用登记,根据表 oauthclientdetails 的结构,我们登记的时候只填写应用名称和回调地址即可,其它的字段如下:

  • client_id:使用UUID生成
  • client_secret:使用UUID生成,并使用 BCryptPasswordEncoder 加密
  • scope:默认all
  • authorizedgranttypes :默认 authorizationcode,password,refreshtoken 三个

下面是sql语句:

file

file

Service中的方法:

file

接口定义:

file

下面来测试接口:

file

返回了预期中的客户端id和秘钥。来看一下数据库:

file

现在我们就可以使用新登记的应用来请求令牌了:

  • http://localhost:8029/oauth/authorize?clientid=52f301a86511406ba5b4fbb4809614b0&responsetype=code&redirect_uri=http://localhost:8029/

file

令牌请求结果:

file

状态state字段

为了防止CSRF攻击,在申请授权码这一步时,可以在参数中增加一个state状态参数,这个参数是由客户端生成的随机字符串,授权服务会原封不动的返回这个参数和参数值,用户进行授权客户端的请求时也会携带此字符串用于比较。如下:

  • http://localhost:8029/oauth/authorize?clientid=52f301a86511406ba5b4fbb4809614b0&responsetype=code&redirect_uri=http://localhost:8029/&state=123456789

返回结果如下:

file

如果传递过去的和回来的不一样,可以认为不合法。

代码地址:https://gitee.com/blueses/spring-boot-security 29

本文由博客一文多发平台 OpenWrite 发布!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值