最新公司的项目也搞对外开放,也就是加入开放的潮流。目前有很多大公司都已开放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关联类如下:
-
获取token
token相关的类图
大体的流程基本如上,具体的xml配置请参考sparklr2的src/main/webapp/WEB-INF/spring-servlet.xml。
分享到:
相关推荐
笔记该项目处于。 Spring 的直接内置于Spring Security中。Spring Security OAuth Boot 2自动配置该项目为Spring Boot 2和旧的Spring Security OAuth项目提供自动配置。 有关更多详细信息,请参阅。
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
身份验证:Spring Security支持多种身份验证方式,包括基本认证、表单登录、LDAP认证、OAuth等,同时也支持自定义的认证方式。 授权:Spring Security提供了细粒度的授权机制,可以根据角色、权限进行访问控制。...
Spring Security OAuth2.0 是一个广泛使用的Java安全框架,它为构建安全的Web应用程序提供了强大的支持。OAuth2.0是授权框架的一个标准,允许第三方应用在用户授权的情况下访问其私有资源,而无需共享用户的登录凭证...
在本笔记中,我们将深入探讨SpringSecurity的核心概念、配置以及如何与SpringBoot结合使用。 1. **SpringSecurity核心概念** - **Filter Chain**: SpringSecurity通过一系列过滤器实现其安全功能,这些过滤器构成...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
Spring Security OAuth 是一个广泛使用的安全框架,它提供了OAuth 2.0的实现,用于构建安全的Web应用程序和服务。OAuth允许第三方应用以受限制的方式访问用户的数据,同时保持用户的隐私。以下是关于Spring Security...
这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...
9. **兼容性增强**:可能增强了对最新技术和框架的兼容性,如Spring Boot、MyBatis Plus等,以便更好地融入现代开发环境。 10. **文档和示例**:系统提供详尽的API文档和示例代码,帮助开发者快速上手和理解如何...
15-自定义配置-SpringSecurity的默认配置 16-自定义配置-添加用户功能的实现 17-自定义配置-添加用户功能的测试 18-自定义配置-密码加密算法 19-自定义配置-密码加密测试 20-自定义配置-DelegatingPasswordEncoder ...
2. **OAuth2集成**:Spring Security支持OAuth2协议,可以用于实现第三方登录(如Facebook、Google)。 3. **CSRF防护**:Spring Security提供跨站请求伪造(CSRF)防护机制,防止恶意攻击。 总的来说,Spring ...
例如,可以使用OAuth2 实现第三方登录,Spring Security 处理内部认证和授权。 2. **授权服务器**:Spring Security 提供OAuth2 提供者支持,可以搭建自己的授权服务器,实现令牌的颁发和验证。 3. **保护API**:在...
spring-parentmaven父pom和子pom的版本号批量修改1 设置新的版本号./mvnw versions:set -DnewVersion=2.4.12 撤销设置./mvnw versions:revert3 提交设置./mvnw versions:commit4.项目打包(同时处理项目所依赖的包)...
目前,该实现仅支持spring-security-oauth2的2.3.8版本。 我决定不使用更高版本,因为大多数功能都已弃用。 由于旧版本中支持许多端点,因此我只有时间实现暴露/oauth/token tokenEndpoint。 如果您使用其他端点,...
4. **使用HTTP基本认证或OAuth2**:Spring Security支持多种认证方式,包括HTTP基本认证、OAuth2等。静态资源可能需要某种形式的认证才能访问,你可以根据项目需求选择合适的认证机制。 5. **启用CSRF防护**:虽然...
读书笔记:Spring Security OAuth2.0认证授权案例实战。
在本学习笔记中,我们将深入探讨Spring Security的核心概念和配置,以及如何设计数据库表来支持权限管理。 首先,Spring Security的配置始于Web应用的入口点——`web.xml`文件。在这里,我们需要定义一个名为`...
在 `SpringSecurityTest01` 这个压缩包文件中,你可能找到了一个示例项目,它可能包含了配置类、控制器、视图和测试用例。通过分析这些代码,你可以更深入地理解如何在实际项目中应用 Spring Security。 总之,...
这个"springSecurityTest.zip"文件是一个IDEA(IntelliJ IDEA)与MAVEN项目,设计用于帮助初学者理解并入门Spring Security。下面将详细阐述Spring Security的主要概念和其在实际开发中的应用。 首先,Spring ...
本笔记将深入探讨Spring Security的核心概念和关键组件,帮助编程不良人更好地理解和应用这个框架。 一、认证与授权基础 Spring Security 的核心功能是处理用户认证和权限授权。认证是验证用户的身份,通常通过...