spring-security-oauth使用笔记

本文探讨了OAuth2.0协议的应用,并详细介绍了使用Spring Security OAuth实现的具体流程。包括请求用户授权、获取code及token的过程,对比了两个不同版本的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最新公司的项目也搞对外开放,也就是加入开放的潮流。目前有很多大公司都已开放api,为何我们公司还搞的,我们搞的主要目的不是为了对外开放api,只是方便第三方应用获取用户授权的信息,整合所有的有效资源,因此来说我们采用的oauth协议是最简单最实用的。由于公司自己没有实力,只能依靠开源的实现,经过对多方考察,感觉spring-security-oauth实现的最好,大家可参考http://netment.iteye.com/blog/945402博客,他们也认为spring-security-oauth不错的。不过,我自己去实际考察又发现,不只是有oauth1.0和oauth2.0,而且虽然都是基于security的实现,竟然有两种不同的实现版本,主要讨论的是oauth2.0

第一个版本
网址是http://svn.codehaus.org/spring-security-oauth/branches/SS3/,已提交到maven仓库了groupId=org.codehaus.spring-security-oauth,这个版本实现的相对比较简单,只支持内存保存token,而且结合security比较紧密,非常适合学习。
oauth2.0的基本流程,1.请求用户授权,2.获取code,3.获取token,4.请求资源验证token。 因此,只需要关注WebServerOAuth2Filter,BasicUserApprovalFilter,OAuth2AuthorizationFilter,OAuth2ProtectedResourceFilter,其中WebServerOAuth2Filter是/oauth/user/authorize入口,验证code无效, unapprovedAuthenticationHandler跳转到/oauth/confirm_access,用户提交之后 BasicUserApprovalFilter拦截之后,获取授权参数,就交给 WebServerOAuth2Filter获取code,获取code返回到client,然后client再次请求 /oauth/authorize,OAuth2AuthorizationFilter获取token,之后只要请求的时候带上token由 OAuth2ProtectedResourceFilter负责验证,是否可获取用户资源。
第二个版本
网址https://github.com/SpringSource/spring-security-oauth/wiki/oauth2,这个版本oauth2.0的基本所有功能都已实现,不过还是处于内部测试当中,spring-security-oauth2-1.0.0.BUILD-SNAPSHOT,需要自己手动下载后利用maven编译成jar,其中第一次编译的时候,去掉 <module>samples</module>,否则就会出现编译错误。我们公司目前的程序开发也处于内部测试当中,因此,大胆采用该版本。现在详细论述一下,具体的实现流程。
按照oauth2.0的协议规定,oauth2.0大体的流程如下:
具体的协议可参考http://oauth.net/2/,我们这里主要说明一下Authorization Grant,主要有四类Authorization Code,Implicit,Resource Owner Password Credentials,Client Credentials,这里主要介绍服务端Authorization Code授权流程,基本流程:1.请求用户授权,2.获取code,3.获取token,4.请求资源验证token。
  • 请求用户授权和获取code

首先要请求用户授权,其次才会生成一个临时的code.可参考一下,我简单画得一个流程图如下:

 

code关联类如下:

 

  • 获取token
token相关的类图

  • 请求资源验证token


大体的流程基本如上,具体的xml配置请参考sparklr2的src/main/webapp/WEB-INF/spring-servlet.xml。































资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值