Spring boot和Vue.js实现基于oauth2授权码模式的认证 (一)

在一个新的项目技术选型如下:

   后端:JAVA  11 / Spring Boot  (2.7.1)

   前端:Vue.js(vue2)

  因涉及到权限认证,开始研究下如何在Spring Boot里实现,前前后后鼓捣花了一些时间,踩了一些坑,现把经验整理分享给大家。

权限认证模式

      笔者对比研究了一下,最终还是决定采用 oauth2协议的授权码模式(authorization code),理由是授权码模式(authorization code)是功能最完整、流程最严密的授权模式。

  oauth2协议快速参考可看

理解OAuth 2.0 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

技术框架

     Spring Security(5.7.2)

      spring security是一个提供认证、授权、保护免收常规攻击的框架库,可用于命令式和响应式的WEB应用,也是Spring应用安全的事实标准。

      建议读者多看几遍官方文档,我前前后后看了不下于3遍,某些章节反复看了N遍,尤其对于架构图要理解吃透Spring Security :: Spring Securityhttps://docs.spring.io/spring-security/reference/index.html

    Spring Authorization Server (0.3.0)

      Spring Authorization Server是一个实现 OAuth 2.1 和 OpenID Connect 1.0 及其他规范的框架库。它基于Spring Security之上构建来提供一个安全的、轻量的、可定制化的认证服务框架,可用于提供OpenID Connect 1.0 Identity 服务和OAuth2授权服务。

     建议至少看一遍官方文档,形成初步的理解
Spring Authorization Server Referencehttps://docs.spring.io/spring-authorization-server/docs/current/reference/html/index.html

     授权服务功能之前是在Spring官方的一个叫Spring Security OAuth的项目来实现,早已经不维护了,建议转到Spring Authorizaiton Server这个项目上,具体细节可参考下面文章
再见,Spring Security OAuth!! - 知乎官宣新品最近,Spring 官方又推出了《 Spring Authorization Server》项目: 本次将 《 Spring Authorization Server》项目正式上线,去掉了之前的体验状态,此举恰逢 0.2.0 版本发布,这也是第一个正式支持的生产…https://zhuanlan.zhihu.com/p/406125789

跑通样例代码

     看完上述的文档后,开始实践新技术的做法就是跑通样例代码,请先克隆一份样例代码到本地

git clone https://github.com/spring-projects/spring-security-samples.git

进入目录

spring-security-samples\servlet\spring-boot\java\oauth2\authorization-server

修改gradle.properties文件,把spring-security.version设为5.7.2

version=5.7.0-SNAPSHOT
spring-security.version=5.7.2

 修改build.gradle文件,将org.springframework.boot设为2.7.1

plugins {
	id 'org.springframework.boot' version '2.7.1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id "nebula.integtest" version "8.2.0"
	id 'java'
}

修改src/main/resources/application.xml文件,防止出现whitelabel错误页面

server:
  port: 9000
  error:
    whitelabel:
      enabled: false

 运行gradle构建

./gradlew build

正常的话应该显示构建成功的消息,会出现build目录,在build/libs目录会有jar包 

然后输入以下命令运行程序

./gradlew :bootRun

 正常运行会出现类似输出,可以看到日志里有提示监听9000端口

 打开浏览器输入http://localhost:9000,会自动跳转到http://localhost:9000/login页面,这是默认的登录页面,输入用户名user 密码 password

 登录成功会出现如下页面(因首页没有对应页面,所以提示404,实际表示已经登录成功)

截止到目前为止,我们已经把Spring Authorization Server这个样例代码跑通了。 

预知后事如何,请看下回分解 (码字好累。。。。)

Spring boot和Vue.js实现基于oauth2授权码模式的认证 (二)_omage的博客-CSDN博客上篇内容介绍了基本知识和如何跑通spring authorization server的demo,那接下来我们讲讲客户端这块,这里笔者用了一个开源的vue-oidc-client作为客户端,通过oidc协议来与spring authorization server进行通信实现authorization code模式的认证流程。...https://blog.csdn.net/omage/article/details/126208869?spm=1001.2014.3001.5501

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值