Login, so easy.
QQ 群:230017570
微信群:justauth (备注justauth或者ja)
帮助文档:www.justauth.cn
JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK,让登录变得So easy!
JustAuth 集成了诸如:Github、Gitee、支付宝、新浪微博、微信、Google、Facebook、Twitter、StackOverflow等国内外数十家第三方平台。更多请参考已集成的平台
当前项目不是原始 JustAuth 的直接原版,而是在码匠君维护的 JDK 17 分支基础上继续开发的版本。仓库提交历史中的演进关系如下:
| 阶段 | 维护者 | 版本 / Maven 坐标 | 主要定位 |
|---|---|---|---|
| 原始项目基线 | JustAuth 原项目 | me.zhyd.oauth:JustAuth:1.16.7 |
支持 JDK 8,使用 Fastjson 1.x |
| JDK 17 改造版 | 码匠君 | cn.herodotus.opensteward:JustAuth:2.0.0 |
升级到 JDK 17,改用 Fastjson2,整理常量、依赖和构建配置 |
| 当前维护版 | AprilWind | io.github.windtool:JustAuth:3.0.1 |
基于码匠君 2.0.0 继续开发,改用 Jackson 3,修复平台兼容问题并增加私有化部署平台 |
本文档以当前
master分支代码为准。当前实现与码匠君版本存在冲突时,采用当前维护版的实现。
公众号发布说明:JustAuth 3.0.1 正式发布:拥抱 JDK 17、Jackson 3,新增私有化 OAuth 平台支持
- 最低运行和编译环境由 JDK 8 升级为 JDK 17。
- Maven 坐标调整为
cn.herodotus.opensteward:JustAuth:2.0.0。 - 将 Fastjson 1.x 替换为 Fastjson2,并同步改造各平台响应解析及
AuthUser.rawUserInfo类型。 - 新增统一的 OAuth 参数、媒体类型常量以及
TokenUtils,减少重复字符串和 Token 拼接逻辑。 - 升级 Alipay SDK、Bouncy Castle、Guava、JJWT、Lombok 和 Maven 插件等依赖及构建工具。
- 重新整理 Maven 发布配置和 GitHub Actions,并修复 Builder 默认值、导入及部分依赖配置问题。
- JSON 实现以当前版本为准:移除 Fastjson2,改用 Jackson 3,并提供
JsonObject、JsonArray、JsonUtils作为项目内部统一 JSON 接口;AuthUser.rawUserInfo现在是JsonObject。 - Maven 坐标和项目版本调整为
io.github.windtool:JustAuth:3.0.1,项目元数据、源码包、Javadoc、GPG 签名和 Central Portal 发布配置同步切换到当前仓库。 - 修复企业微信新旧接口分别返回
userid和UserId时的兼容问题。 - 优化新版钉钉二维码登录实现,补全方法说明和重定向地址编码处理。
- 新增
serverUrl配置和私有化 OAuth 服务公共基类,支持 Gitea、MaxKey、TopIAM 私有化部署。 - 为新增的
serverUrl保留旧的AuthConfig全参构造器签名,降低从码匠君版本升级时出现二进制兼容问题的风险。
- JDK 版本必须为 17 或更高版本。
- 需要将 Maven 坐标替换为当前版本坐标。
- 如果业务代码直接使用了
AuthUser#getRawUserInfo(),请将 Fastjson/Fastjson2 的JSONObject用法迁移到me.zhyd.oauth.utils.JsonObject或标准MapAPI。 - 当前工程将
jackson-databind声明为provided,运行环境需要提供兼容的 Jackson 3 实现。
- 全:已集成十多家第三方平台(国内外常用的基本都已包含),仍然还在持续扩展中(开发计划)!
- 简:API就是奔着最简单去设计的(见后面
快速开始),尽量让您用起来没有障碍感!
- 集成国内外数十家第三方平台,实现快速接入。参考文档
- 自定义 State 缓存,支持各种分布式缓存组件。参考文档
- 自定义 OAuth 平台,更容易适配自有的 OAuth 服务。参考文档
- 自定义 Http 实现,选择权完全交给开发者,不会单独依赖某一具体实现。参考文档
- 自定义 Scope,支持更完善的授权体系。参考文档
- 更多...参考文档
<dependency>
<groupId>io.github.windtool</groupId>
<artifactId>JustAuth</artifactId>
<version>3.0.1</version>
</dependency>
当前维护版要求 JDK 17+。版本是否已经同步到中央仓库,请以 Maven Central 为准。
项目内部使用 Jackson 3 解析 JSON。由于 jackson-databind 在本项目中使用 provided 作用域,如果你的应用尚未提供 Jackson 3,请补充运行时依赖:
<dependency>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>3.1.4</version>
</dependency>
如下任选一种 HTTP 工具 依赖,项目内如果已有,请忽略。另外需要特别注意,如果项目中已经引入了低版本的依赖,请先排除低版本依赖后,再引入高版本或者最新版本的依赖
-
hutool-http
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-http</artifactId> <version>5.7.7</version> </dependency> -
httpclient
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> -
okhttp
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.1</version> </dependency>
// 创建授权request
AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build());
// 生成授权页面
authRequest.authorize("state");
// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数
// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state
authRequest.login(callback);
静态配置 AuthConfig
AuthRequest authRequest = AuthRequestBuilder.builder()
.source("github")
.authConfig(AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build())
.build();
// 生成授权页面
authRequest.authorize("state");
// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数
// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state
authRequest.login(callback);
动态获取并配置 AuthConfig
AuthRequest authRequest = AuthRequestBuilder.builder()
.source("gitee")
.authConfig((source) -> {
// 通过 source 动态获取 AuthConfig
// 此处可以灵活的从 sql 中取配置也可以从配置文件中取配置
return AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build();
})
.build();
Assert.assertTrue(authRequest instanceof AuthGiteeRequest);
System.out.println(authRequest.authorize(AuthStateUtils.createState()));
AuthRequest authRequest = AuthRequestBuilder.builder()
// 关键点:将自定义实现的 AuthSource 配置上
.extendSource(AuthExtendSource.values())
// source 对应 AuthExtendSource 中的枚举 name
.source("other")
// ... 其他内容不变,参考上面的示例
.build();
感谢以下赞助商的支持:
有很多公司、组织和个人把 JustAuth 用于学习、研究、生产环境和商业产品中,包括(但不限于):
怎么没有我?登记
JAP开源的登录认证中间件: https://gitee.com/fujieid/japspring-boot-demo深度学习并实战 spring boot 的项目: https://github.com/xkcoding/spring-boot-demomicaSpringBoot 微服务高效开发工具集: https://github.com/lets-mica/micasureness面向restful api的高性能认证鉴权框架:sureness
更多推荐,请参考:JustAuth - 开源推荐
- 感谢 JetBrains 提供的免费开源 License:












