`
bukebuhao
  • 浏览: 88436 次
  • 性别: Icon_minigender_1
  • 来自: 绍兴
社区版块
存档分类
最新评论

spring-security-oauth使用笔记

阅读更多

最新公司的项目也搞对外开放,也就是加入开放的潮流。目前有很多大公司都已开放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。































分享到:
评论
12 楼 lf008 2017-04-25  
你好,你提供的demo下载不到了,能加下QQ,提供demo给我参考下,441807336
11 楼 zhdi0 2013-04-12  
我要结合 OAuth2RestTemplate 访问授权资源,提示 An Authentication object was not found in the SecurityContext, 客户端要怎么设置TOKEN啊,能不能交流下
10 楼 java_4_ever 2012-12-28  
谢谢,最终找到了一个能用的。
官网的为什么不行我也无解。
9 楼 bukebuhao 2012-12-25  
bukebuhao 写道
java_4_ever 写道
你好,我把代码下下来之后用mven编译的时候有这样的错误,不知道你有没有遇到过,如果有事怎么解决的?
[ERROR] Failed to execute goal on project tonr2: Could not resolve dependencies for project org.springframew
ork.security.oauth:tonr2:war:1.0.1.BUILD-SNAPSHOT: The following artifacts could not be resolved: org.spring
framework.security.oauth:sparklr2:war:1.0.1.BUILD-SNAPSHOT, org.springframework.security.oauth:spring-securi
ty-oauth2:jar:1.0.1.BUILD-SNAPSHOT: Failure to find org.springframework.security.oauth:sparklr2:war:1.0.1.BU
ILD-SNAPSHOT in http://maven.springframework.org/milestone was cached in the local repository, resolution wi
ll not be reattempted until the update interval of spring-milestone has elapsed or updates are forced -> [He
lp 1]

maven编辑的时候,主要是一个先后顺序。还有就是你本地下载的地址有缓存,可能下载不成功,导致加载jar失败。

如果是下载失败,导致加载不成功,到本地目录下删除对应的文件目录,重新下载就可了
8 楼 bukebuhao 2012-12-25  
java_4_ever 写道
你好,我把代码下下来之后用mven编译的时候有这样的错误,不知道你有没有遇到过,如果有事怎么解决的?
[ERROR] Failed to execute goal on project tonr2: Could not resolve dependencies for project org.springframew
ork.security.oauth:tonr2:war:1.0.1.BUILD-SNAPSHOT: The following artifacts could not be resolved: org.spring
framework.security.oauth:sparklr2:war:1.0.1.BUILD-SNAPSHOT, org.springframework.security.oauth:spring-securi
ty-oauth2:jar:1.0.1.BUILD-SNAPSHOT: Failure to find org.springframework.security.oauth:sparklr2:war:1.0.1.BU
ILD-SNAPSHOT in http://maven.springframework.org/milestone was cached in the local repository, resolution wi
ll not be reattempted until the update interval of spring-milestone has elapsed or updates are forced -> [He
lp 1]

maven编辑的时候,主要是一个先后顺序。还有就是你本地下载的地址有缓存,可能下载不成功,导致加载jar失败。
7 楼 java_4_ever 2012-12-22  
你好,我把代码下下来之后用mven编译的时候有这样的错误,不知道你有没有遇到过,如果有事怎么解决的?
[ERROR] Failed to execute goal on project tonr2: Could not resolve dependencies for project org.springframew
ork.security.oauth:tonr2:war:1.0.1.BUILD-SNAPSHOT: The following artifacts could not be resolved: org.spring
framework.security.oauth:sparklr2:war:1.0.1.BUILD-SNAPSHOT, org.springframework.security.oauth:spring-securi
ty-oauth2:jar:1.0.1.BUILD-SNAPSHOT: Failure to find org.springframework.security.oauth:sparklr2:war:1.0.1.BU
ILD-SNAPSHOT in http://maven.springframework.org/milestone was cached in the local repository, resolution wi
ll not be reattempted until the update interval of spring-milestone has elapsed or updates are forced -> [He
lp 1]
6 楼 bukebuhao 2012-12-21  
听听米 写道
您好,能不能加一下qq,关于OAuthe2.0的一些问题想向你请教一下,因为最近我们公司也有这样的需求,但是不太懂,谢谢!!!605196681

谢谢关注,有什么问题,我看看能否解决。后来我们没采用oauth2.0啦,后来直接参考
http://stamen.iteye.com/blog/1625094实现方式
5 楼 听听米 2012-12-12  
您好,能不能加一下qq,关于OAuthe2.0的一些问题想向你请教一下,因为最近我们公司也有这样的需求,但是不太懂,谢谢!!!605196681
4 楼 百威 2012-06-20  
spring-security-oauth2都需要依赖那些jar包
3 楼 tz_dream 2012-06-14  
你好,可以加QQ交流下OAuth吗?Q号:476858605,谢谢!
2 楼 bukebuhao 2012-02-29  
niuky 写道
请问有案例没?这个还是不怎么会使用,下载了看了下!希望交流下!

可参考示例samples
1 楼 niuky 2012-02-28  
请问有案例没?这个还是不怎么会使用,下载了看了下!希望交流下!

相关推荐

    spring-security-oauth2-boot:提供spring-security-oauth2和Boot 2集成(即autoconfig)

    笔记该项目处于。 Spring 的直接内置于Spring Security中。Spring Security OAuth Boot 2自动配置该项目为Spring Boot 2和旧的Spring Security OAuth项目提供自动配置。 有关更多详细信息,请参阅。

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

    视频配套笔记_Spring Security OAuth2.0认证授权_v1.1.rar

    Spring Security OAuth2.0 是一个广泛使用的Java安全框架,它为构建安全的Web应用程序提供了强大的支持。OAuth2.0是授权框架的一个标准,允许第三方应用在用户授权的情况下访问其私有资源,而无需共享用户的登录凭证...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    SpringSecurity笔记,编程不良人笔记

    在本笔记中,我们将深入探讨SpringSecurity的核心概念、配置以及如何与SpringBoot结合使用。 1. **SpringSecurity核心概念** - **Filter Chain**: SpringSecurity通过一系列过滤器实现其安全功能,这些过滤器构成...

    Spring Security OAuth 笔记.doc

    Spring Security OAuth 是一个广泛使用的安全框架,它提供了OAuth 2.0的实现,用于构建安全的Web应用程序和服务。OAuth允许第三方应用以受限制的方式访问用户的数据,同时保持用户的隐私。以下是关于Spring Security...

    Spring Security 资料合集

    这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...

    renren-security轻量级权限管理系统 v5.3.0.zip

    9. **兼容性增强**:可能增强了对最新技术和框架的兼容性,如Spring Boot、MyBatis Plus等,以便更好地融入现代开发环境。 10. **文档和示例**:系统提供详尽的API文档和示例代码,帮助开发者快速上手和理解如何...

    SpringSecurity和OAuth2实战精讲视频.zip

    15-自定义配置-SpringSecurity的默认配置 16-自定义配置-添加用户功能的实现 17-自定义配置-添加用户功能的测试 18-自定义配置-密码加密算法 19-自定义配置-密码加密测试 20-自定义配置-DelegatingPasswordEncoder ...

    Spring Security笔记.rar

    2. **OAuth2集成**:Spring Security支持OAuth2协议,可以用于实现第三方登录(如Facebook、Google)。 3. **CSRF防护**:Spring Security提供跨站请求伪造(CSRF)防护机制,防止恶意攻击。 总的来说,Spring ...

    spring_security.zip

    例如,可以使用OAuth2 实现第三方登录,Spring Security 处理内部认证和授权。 2. **授权服务器**:Spring Security 提供OAuth2 提供者支持,可以搭建自己的授权服务器,实现令牌的颁发和验证。 3. **保护API**:在...

    spring-parent:自定义Springboot starter、自动化配置、条件配置、AOP、模式配置、幂等性组件、限流组件、返回值包装组件、redis组件、异常处理组件、基础工具包、Spring security、OAuth2、集成Redis、封装token端点、Spring学习笔记、RabbitMQ、Docker、Netty

    spring-parentmaven父pom和子pom的版本号批量修改1 设置新的版本号./mvnw versions:set -DnewVersion=2.4.12 撤销设置./mvnw versions:revert3 提交设置./mvnw versions:commit4.项目打包(同时处理项目所依赖的包)...

    spring-reactive-authorization-server

    目前,该实现仅支持spring-security-oauth2的2.3.8版本。 我决定不使用更高版本,因为大多数功能都已弃用。 由于旧版本中支持许多端点,因此我只有时间实现暴露/oauth/token tokenEndpoint。 如果您使用其他端点,...

    狂神Spring Security静态资源

    4. **使用HTTP基本认证或OAuth2**:Spring Security支持多种认证方式,包括HTTP基本认证、OAuth2等。静态资源可能需要某种形式的认证才能访问,你可以根据项目需求选择合适的认证机制。 5. **启用CSRF防护**:虽然...

    读书笔记:Spring Security OAuth2.0认证授权案例实战。.zip

    读书笔记:Spring Security OAuth2.0认证授权案例实战。

    Spring_Security权限管理_学习笔记

    在本学习笔记中,我们将深入探讨Spring Security的核心概念和配置,以及如何设计数据库表来支持权限管理。 首先,Spring Security的配置始于Web应用的入口点——`web.xml`文件。在这里,我们需要定义一个名为`...

    Spring Security tutorial 学习笔记(一)

    在 `SpringSecurityTest01` 这个压缩包文件中,你可能找到了一个示例项目,它可能包含了配置类、控制器、视图和测试用例。通过分析这些代码,你可以更深入地理解如何在实际项目中应用 Spring Security。 总之,...

    springSecurityTest.zip

    这个"springSecurityTest.zip"文件是一个IDEA(IntelliJ IDEA)与MAVEN项目,设计用于帮助初学者理解并入门Spring Security。下面将详细阐述Spring Security的主要概念和其在实际开发中的应用。 首先,Spring ...

    编程不良人的spring security笔记

    本笔记将深入探讨Spring Security的核心概念和关键组件,帮助编程不良人更好地理解和应用这个框架。 一、认证与授权基础 Spring Security 的核心功能是处理用户认证和权限授权。认证是验证用户的身份,通常通过...

    SpringSecurity笔记

    4. **实现认证**:根据需求选择合适的认证机制,如使用 Spring Security 的 UsernamePasswordAuthenticationFilter 实现用户名和密码认证,或者集成 OAuth2、JWT 等现代认证方案。 5. **实现授权**:通过配置访问...

Global site tag (gtag.js) - Google Analytics