千家信息网

SpringBootSecurity中OAuth2.0简单示例是怎样的

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,SpringBootSecurity中OAuth2.0简单示例是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。OAuth3.0OA
千家信息网最后更新 2024年11月23日SpringBootSecurity中OAuth2.0简单示例是怎样的

SpringBootSecurity中OAuth2.0简单示例是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

OAuth3.0

OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。客户端来申请资源,资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。也就是说,OAuth 的核心就是向第三方应用颁发令牌。而且,OAuth 2.0 规定了四种获得令牌的流程。你可以选择最适合自己的那一种,向第三方应用颁发令牌。

下面我们来使用spring cloud security 和 spring cloud oauth3两个组件来简单实现授权流程。

授权服务

下面我们来使用spring cloud security 实现一个授权服务,首先来引入依赖:

除了一个web组件,只引入了一个spring-cloud-starter-oauth3,这是因为spring cloud下的oauth3组件已经包含了security:

首先写一个正常的登录功能,application配置文件和启动类都不用增加特殊配置,主要来配置security配置类:

这里面基本没有特殊的配置,都是前面遇到过的熟悉的配置。有了这个配置类,基本的登录功能就有了,要想有授权功能,还需要一个授权配置类,授权配置类需要继承 AuthorizationServerConfigurerAdapter 类,并引入 @EnableAuthorizationServer 注解:

首先配置一个客户端:

然后配置token的存储和管理,此处使用secret作为秘钥,后面会介绍使用非对称加密的方式 :

上面的token存储在了内存中,token也可以存储在数据库或者redis中。最后配置授权端点的访问控制:

以上就是一个简答的授权服务。

资源服务

下面来搭建一个资源服务,其实授权和资源服务是可以合二为一的,此处为了清晰,将它们分开。pom中引入的依赖和授权服务是一样的,同样,配置文件和启动类不需要做特殊配置。首先来写两个简单的接口,一个定义为受保护,另一个不受保护:

然后定义一个资源服务配置类,需要继承 ResourceServerConfigurerAdapter 类,并引入 @EnableResourceServer 注解:

首先来看令牌验证的配置:

然后来看接口资源的拦截规则:

save开头的可以直接访问,不会被拦截,/user/save接口会被验证。

注意上面配置的clientId和secret都是单一的配置死的,如果需要对多客户端动态进行认真,需要重写,后面是通过http调用的方式解析访问令牌(主要是通过访问授权服务的/oauth/check_token解析)。

测试

我们来根据前面说到的流程测试,首先向授权服务申请一个授权码:

  • http://localhost:8015/oauth/authorize?client_id=clientId&response_type=code&redirect_uri=http://localhost:8015/

访问首先会跳转到登录页面:

输入配置中默认的用户名密码登录,然后进入下一个页面:

这个页面是真正的授权页面,选择Approve,点击按钮,同意授权,授权码会通过回调地址获取,如下图:

然后携带授权码申请访问令牌,需要访问下面的地址(需要使用post方式):

  • http://localhost:8015/oauth/token?grant_type=authorization_code&code=授权码&redirect_uri=http://localhost:8015/&client_id=clientId&client_secret=secret

将授权码替换上面地址中的授权码三个字,然后在postman中访问:

其返回结果中,包含access_token参数,就是我们需要的访问令牌,token_type 参数说明了令牌的类型,一般类型为bearer或者refresh_token可以在访问令牌过期后向授权服务申请新的令牌,expires_in参数是令牌的有效时间,单位是秒,图中显示默认是12个小时。令牌已经得到了,下面来访问资源接口,首先试一下不受保护的资源:

可以看到直接就能访问,然后访问受保护的资源接口:

得到这样的结果说明该接口需要认证,我们来使用我们前面得到的令牌来访问,首先选择正确的认真协议:

然后在右侧填写前面获取的access_token:

然后访问接口,就能看到受保护的资源通过令牌可以访问:

看完上述内容,你们掌握SpringBootSecurity中OAuth2.0简单示例是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

配置 令牌 资源 服务 接口 客户 客户端 保护 页面 登录 特殊 功能 地址 就是 方式 来使 流程 组件 存储 选择 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小皮助手打不开数据库 惠农科技互联网金融 智慧停车系统数据库逻辑设计图 电脑服务器主板被锁怎么办 蜂洞网络技术有限公司 达内网络安全课程 百度云 对网络安全的看法200字 数据库的管理方法 黄冈师范大学软件开发专业 敏捷适用于汽车软件开发吗 常用的网络安全服务 为什么培训网络安全管理员 深圳项目软件开发费用是多少 导入excel到数据库指定 qt 连接远程数据库连接 数据库选项包括哪些 网络安全宣传日主持词简短 查看数据库所在路径的sql语句 全球最牛服务器存放位置 西安亿利达网络技术 东莞信息报修管理软件开发 数据库中有商品要 win7凭证管理服务器样式 数据库原理与设计课后答案 ps5黑色行动4怎么换服务器 山东光峰互联网科技有限公司 国内食品安全事件数据库 直播教学软件开发 班级网络安全教育活动过程 中小学开展网络安全活动
0