`
bukebuhao
  • 浏览: 88670 次
  • 性别: 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学习资料(源码)

    身份验证:Spring Security支持多种身份验证方式,包括基本认证、表单登录、LDAP认证、OAuth等,同时也支持自定义的认证方式。 授权:Spring Security提供了细粒度的授权机制,可以根据角色、权限进行访问控制。...

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

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

    SpringSecurity笔记,编程不良人笔记

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

    springsecurity学习笔记

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

    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 的核心功能是处理用户认证和权限授权。认证是验证用户的身份,通常通过...

Global site tag (gtag.js) - Google Analytics