oauth2-shiro

授权协议 Apache
开发语言 Java
所属分类 Web应用开发、 OAuth开发包
软件类型 开源软件
地区 国产
投 递 者 陶睿
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

oauth2-shiro

整合Apache Oltu 与 Shiro. 提供一个轻量的OAUTH2应用框架.

并根据不同的应用场景提供不同的实现(如web场景,移动设备).

该项目与spring-oauth-server实现相同的需求与场合. 只是在实现上使用的技术不同(spring-oauth-server使用Spring Security + spring-security-oauth2实现; oauth2-oltu实现); 相比spring-oauth-server, oauth2-oltu具有如下特点:

  • 更加透明 -- 每一步实现都有可以查看的, 更容易理解的代码, 一目也然

  • 更多的可自定义与可扩展 -- 不管是ERROR返回信息的内容或格式, 都可根据需要自定义, 对请求参数,处理细节等可添加更多的具体实现

  • 可读性更强 -- 由于Shiro, Oltu 没有Spring Security,spring-security-oauth2 的门槛高, 所有代码都是常用的Controller或Java Bean实现各项业务, 更可读,更易于理解

  • 模块化 -- 得益于Oltu的模块化设计, 将authzserver, resourceserver分开成不同的模块, 使用时可根据实际需要将二者合并在一个项目中可拆分为不同的模块

主要技术及版本

Spring -- 3.2.2.RELEASE 
oltu -- 1.0.0 
shiro -- 1.2.3 
MySQL -- 5.6

开发环境

  • JDK -- 1.7.0_40

  • Maven -- 3.1.0

  • MySQL -- 5.6.23-log

如何使用

  1. 项目是Maven管理的, 需要本地安装maven(开发用的maven版本号为3.1.0), 还有MySql(开发用的mysql版本号为5.6)

  2. 下载(或clone)项目到本地

  3. 创建MySQL数据库(如数据库名 oauth2_shiro), 并运行相应的SQL脚本(脚本文件位于others/database目录), 
    运行脚本的顺序: oauth2-shiro.ddl -> initial-db.ddl

  4. 修改oauth2-shiro.properties(位于src/main/resources目录)中的数据库连接信息(包括username, password等)

  5. 将本地项目导入到IDE(如Intellij IDEA)中,配置Tomcat(或类似的servlet运行服务器), 并启动Tomcat(默认端口为8080); 
    注意将项目的 contextPath(根路径) 设置为 'os'. 
    另: 也可通过maven package命令将项目编译为war文件(os.war), 将war放在Tomcat中并启动(注意: 这种方式需要将 oauth2-shiro.properties 加入到classpath中并正确配置数据库连接信息).

  6. 参考oauth_test.txt(位于others目录)的内容并测试之(也可在浏览器中访问相应的地址,如: http://localhost:8080/os/).


支持的 grant_type 
说明 oauth2-shiro 项目支持的grant_type(授权方式)与功能

  1. authorization_code -- 授权码模式(即先登录获取code,再获取token)

  2. password -- 密码模式(将用户名,密码传过去,直接获取token)

  3. refresh_token -- 刷新access_token

  4. implicit(token) -- 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)

  5. client_credentials -- 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向'服务端'获取资源)

博客相关: http://andaily.com/blog/?cat=86

  • 代码地址 代码地址: https://github.com/BoYiZhang/oauth2-shiro-jwt 数据库脚本: oauth2-shiro-jwt/src/main/resources/dbscript/ 接口说明,支持两种方式,两套接口 1.使用JWT生成Token,使用shiro实现鉴权 2.使用oauth2生成token,spring security实现鉴权 使用J

  • 其实jwt与oauth2 之间没有必然联系。jwt只是可以作为oauth2中accessToken 返回内容。 shiro在处理jwt时有啥不一样的地方吗? 参考:springboot2+shiro+jwt整合(一)登录认证 1、Token不一样 1.1、默认的Token在Realm中的处理 @Override protected AuthenticationInfo doGetAuthenti

  • oauth2-shiro 整合Apache Oltu 与 Shiro. 提供一个轻量的OAUTH2应用框架. 并根据不同的应用场景提供不同的实现(如web场景,移动设备). 该项目与spring-oauth-server实现相同的需求与场合. 只是在实现上使用的技术不同(spring-oauth-server使用Spring Security + spring-security-oauth2实现;

  • 总体思路: 单系统分密码登录与免密码登录(手机验证码,邮箱登录,微信oauth2接入,其他系统单点过来),用多realm实现 单系统无需登录接入前端系统(移动端,小程序,大屏等),用oauth2认证获取jwt无状态token,进行调用接口 多系统互相跳转实现单点,用oltu框架oauth2协议实现(同一) 单点流程梳理: 方案一(参考xboot): 站点1发现用户未登录时,跳转至认证中心 认证中心

  • oauth2-shiro-redis Integrate oauth2-shiro with Redis 说明 该项目具有 oauth2-shiro 的所有功能, 并添加了对 Redis 的支持 从 oauth2-shiro fork 的版本: 0.1-rc 项目使用的 Redis 版本信息 spring-data-redis -> 1.5.2.RELEASE jedis -> 2.7.3 功能变

  • 思路: 微信小程序获取用户授权后能获取到授权code, 前端调用登录接口传给后端code获取用户openid等信息。 登录接口:通过微信api调用getSessionInfo获取openid等基本信息, 获取成功后判断是否为新用户进行登录/新增用户后登录, 通过jwt生成token与refreshToken,将token与refreshToken存入redis中并设置有效期,然后将token与re

  • 单点登录(shiro与Spring Security OAuth 2.0的集成) shiro项目采用ruoyi,OAuth采用pig 若依:https://gitee.com/y_project/RuoYi pig:https://gitee.com/log4j/pig 采用OAuth授权码模式(authorization-code) 1.流程简介: ①:若依配置好以后,点击链接(ip:端口/s

 相关资料
  • 通过 Google 对用户进行身份验证 OAuth2 是用于授权的行业标准协议。它提供了一种机制,使用户可以在不共享用户名,密码和其他私有凭据的情况下,向Web 和桌面应用程序授予对私有信息的访问权限。 本教程构建了一个扩展程序,该扩展程序使用Google People API 和Chrome Identity API 访问用户的 Google 联系人。由于扩展程序无法通过 HTTPS加载,无法执

  • oauth2-shiro-redis Integrate oauth2-shiro with Redis 说明 该项目具有 oauth2-shiro 的所有功能, 并添加了对 Redis 的支持 从 oauth2-shiro fork 的版本: 0.1-rc 项目使用的 Redis 版本信息  spring-data-redis -> 1.5.2.RELEASE  jedis -> 2.7.3 功

  • angular-oauth2 是 AngularJS 的 OAuth2 认证模块,使用 ES6 编写。 使用方法: 1. 引入 js 库: <script src="bower_components/angular/angular.min.js"></script><script src="bower_components/angular-cookie/dist/angular-cookie.mi

  • Swift OAuth2 是 Swift 语言编写的用于 OS X 和 iOS 上的 OAuth2 协议的实现。 迅捷版: 由于Swift语言不断发展,因此我采用了一种镜像Swift版本的版本控制方案:框架版本的前两位始终是库兼容的Swift版本,请参见releases。与全新Swift版本兼容的代码可在单独命名的功能分支上找到。

  • oauth2-server 是一个库,它是一个符合标准的用 PHP 编写的 OAuth 2.0 授权服务器的实现,这使得使用 OAuth 2.0 变得非常简单。您的用户可以对应用程序客户端进行身份验证和授权,并保护您的 API。 oauth2-server 构建一个 OAuth 2.0 服务,支持完整的 oauth2.0 认证服务。 以下框架已经提供 OAuth 2.0 服务的拓展包 CakePH

  • python-oauth2 是 Python 语言的 OAuth 2 的实现,包括客户端和服务器端。该项目经过完整的测试。 它拥有一下特点: 100%单元测试覆盖。 完全去掉了DataStore对象。 所有的类名不再带有OAuth前缀。 Request类生产字典对象。 不再支持Python2.3。 Client类是在httplib2基础上进行的扩展。 文档中的示例全用的是Twitter,包括以下内