整合Apache Oltu 与 Shiro. 提供一个轻量的OAUTH2应用框架实现.
并根据不同的应用场景提供不同的实现(如web场景,移动设备).
该项目与spring-oauth-server实现相同的需求与场合. 只是在实现上使用的技术不同(spring-oauth-server使用Spring Security + spring-security-oauth2实现); 相比spring-oauth-server, oauth2-oltu具有如下特点:
更加透明 -- 每一步实现都有可以查看的, 更容易理解的源代码, 一目了然
更多的可自定义与可扩展 -- 不管是ERROR返回信息的内容或格式, 都可根据需要自定义, 对请求参数,处理细节等可添加更多的具体实现
可读性更强 -- 由于Shiro, Oltu 没有Spring Security,spring-security-oauth2 的门槛高, 所有代码都是常用的Controller或Java Bean实现各项业务, 更可读,更易于理解
模块化 -- 得益于Oltu的模块化设计, 将authz
, resources
分开成不同的模块, 使用时可根据实际需要将二者合并在一个项目中或拆分为不同的模块
oauth2-shiro项目使用模块化开发, 以实现"高内聚, 低耦合"目标, 更符合实际项目需要; 分为三个模块: authz, core 与 resources, 具体说明如下
authz
实现使用各类grant_type去获取token业务逻辑----获取access_token
core
将公共部分提取到该模块中, 减少重复代码, 保证一致性, 如定义ClientDetails, AccessToken; authz, resources 模块都依赖于该模块
resources
资源管理模块,将受OAuth2保护的资源(URI)放在这里----使用access_token
authz
https://andaily.com/authz/ v0.2
resources
https://andaily.com/rs/ v0.2
application-test.properties
,位于 src/test/resources 目录中)。
AuthzApplication.java
; resources默认端口为8083,启动类 ResourcesApplication.java
)。
说明 oauth2-shiro 项目支持的OAuth2 grant_type
(授权方式)与功能
authorization_code
-- 授权码模式(即先登录获取code,再获取token)password
-- 密码模式(将用户名,密码传过去,直接获取token) [不推荐]
refresh_token
-- 刷新access_tokenimplicit(token)
-- 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash) [不推荐]
client_credentials
-- 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向'服务端'获取资源)grant_type
的使用进行了安全升级(如不推荐使用 password 方式),
详细变化请查看 OAuth2.1的状态与主要特征。
从 0.2版本开始将项目的所有计划的开发内容列出来, 方便大家跟进, 也欢迎你加入.
项目的开发管理使用开源项目 andaily-developer.
计划加入Spring-Boot的实现
Version: 2.0.1 [plan]
Date: --- / ---
---
Version: 2.0.0 [finished]
Date: 2020-07-05 / 2023-09-28
升级使用Spring Boot,调整工程结构,使用 thymeleaf替换 servlet/jsp,打包由war换成jar
升级使用JDK 1.8, 日志框架使用logback替换log4j(处理log4j的安全漏洞)
token支持使用JWT
格式,通过配置参数authz.token.generator.type来控制与向下兼容
升级shiro到v1.11.0
密码存储算法由MD5换成SHA-256,并支持盐(salt),使密码存储更安全可靠;通过配置参数authz.store.credentials.alg来控制与向下兼容
对初始的账户密码使用更安全的密码策略:包括大小写字母,数字与特殊符号,长度至少10位
Version: 0.3 [finished]
Date: 2016-07-16 / 2018-10-17
(152) - oltu版本升级到1.0.2 并完成测试.
(153) - 尝试添加并实现OIDC在 oauth2-shiro中[canceled]
(161) - 增加必要的代码注释与配置注释, 更易理解
implicit模式不需要带上client_secret
Version: 0.2 [finished]
Date: 2016-05-26 / 2016-07-03
(66) - 更新首页UI, 参照spring-oauth-server
(67) - client details overview
(68) - client details testing
(69) - user add/edit, overview
(70) - 添加API使用说明, 举例各个场景
(71) - 发布到测试服务器
(72) - resources模块更新UI说明
2015-05-17 Initial project, start push code (private)
2015-07-16 oauth2-shiro项目开发状态(7月)
2015-09-06 oauth2-shiro项目开发状态(8月)
2015-09-06 项目由 私有 变为 开源, 开发 resource 模块
2015-09-26 版本0.1 开发完毕, 发布 0.1-beta 版本
2015-10-07 重构项目结构, 发布 0.1-rc 版本
2016-05-26 开始开发 0.2 版本
2016-07-02 添加在线测试环境
2016-08-17 发布 0.2 版本
2017-01-21 加入到GitHub中, Git@OSC地址: http://git.oschina.net/mkk/oauth2-shiro
2020-07-05 开始2.0.0版本开发
2023-09-28 发布 2.0.0 版本,大升级
spring-oauth-server Spring Security与OAuth2的完整整合项目
spring-oauth-client OAuth 客户端(client)测试项目
支付宝: monkeyking1987@126.com (**钊)
关注更多我的开源项目请访问 https://andaily.com/my_projects.html
若需更多的商业技术支持请联系 monkeyk1987@gmail.com或发私信。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。