# JustAuth **Repository Path**: AprilWind123/JustAuth ## Basic Information - **Project Name**: JustAuth - **Description**: 小而全而美的第三方登录开源组件。目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软、今日头条、Teambition、StackOverflow、Pinterest、人人、华为、企业微信、酷家乐、Gitlab、美团、饿了么、推特、飞书、京东、阿里云、喜马拉雅、Amazon、Slack和 Line 等第三方平台的授权登录。 Login, so easy! - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.justauth.cn - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3208 - **Created**: 2026-07-31 - **Last Updated**: 2026-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Login, so easy.

star github star

-------------------------------------------------------------------------------

star

------------------------------------------------------------------------------- QQ 群:230017570 微信群:justauth (备注`justauth`或者`ja`) 帮助文档:[www.justauth.cn](https://www.justauth.cn) ## 什么是 JustAuth? 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 平台支持](docs/JustAuth-3.0.1-release.md) ### 码匠君版本相对原始 1.16.7 的主要区别 - 最低运行和编译环境由 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 默认值、导入及部分依赖配置问题。 ### 当前版本相对码匠君 2.0.0 的主要区别 - **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` 或标准 `Map` API。 - 当前工程将 `jackson-databind` 声明为 `provided`,运行环境需要提供兼容的 Jackson 3 实现。 ## 有哪些特点? 1. **全**:已集成十多家第三方平台(国内外常用的基本都已包含),仍然还在持续扩展中([开发计划](https://gitee.com/yadong.zhang/JustAuth/issues/IUGRK))! 2. **简**:API就是奔着最简单去设计的(见后面`快速开始`),尽量让您用起来没有障碍感! ## 有哪些功能? - 集成国内外数十家第三方平台,实现快速接入。参考文档 - 自定义 State 缓存,支持各种分布式缓存组件。参考文档 - 自定义 OAuth 平台,更容易适配自有的 OAuth 服务。参考文档 - 自定义 Http 实现,选择权完全交给开发者,不会单独依赖某一具体实现。参考文档 - 自定义 Scope,支持更完善的授权体系。参考文档 - 更多...参考文档 ## 快速开始 ### 引入依赖 ```xml io.github.windtool JustAuth 3.0.1 ``` 当前维护版要求 JDK 17+。版本是否已经同步到中央仓库,请以 [Maven Central](https://central.sonatype.com/artifact/io.github.windtool/JustAuth) 为准。 项目内部使用 Jackson 3 解析 JSON。由于 `jackson-databind` 在本项目中使用 `provided` 作用域,如果你的应用尚未提供 Jackson 3,请补充运行时依赖: ```xml tools.jackson.core jackson-databind 3.1.4 ``` 如下**任选一种** HTTP 工具 依赖,_项目内如果已有,请忽略。另外需要特别注意,如果项目中已经引入了低版本的依赖,请先排除低版本依赖后,再引入高版本或者最新版本的依赖_ - hutool-http ```xml cn.hutool hutool-http 5.7.7 ``` - httpclient ```xml org.apache.httpcomponents httpclient 4.5.13 ``` - okhttp ```xml com.squareup.okhttp3 okhttp 4.9.1 ``` ### 调用api #### 普通方式 ```java // 创建授权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); ``` #### Builder 方式一 静态配置 `AuthConfig` ```java 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); ``` #### Builder 方式二 动态获取并配置 `AuthConfig` ```java 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())); ``` #### Builder 方式支持自定义的平台 ```java AuthRequest authRequest = AuthRequestBuilder.builder() // 关键点:将自定义实现的 AuthSource 配置上 .extendSource(AuthExtendSource.values()) // source 对应 AuthExtendSource 中的枚举 name .source("other") // ... 其他内容不变,参考上面的示例 .build(); ``` ## 赞助和支持 感谢以下赞助商的支持: [我要赞助](https://www.justauth.cn/sponsor.html) ## JustAuth 的用户 有很多公司、组织和个人把 JustAuth 用于学习、研究、生产环境和商业产品中,包括(但不限于): [![](docs/users/col.png)](https://www.mochiwang.com "给作者提供云写作的一个工具")![](docs/users/bjgyol.png)![](docs/users/foresealife.png)![](docs/users/sevnce.png) ![](docs/users/bladex.png)![](docs/users/gun.png)![](docs/users/sika.jpg)![](docs/users/maxkey.png)![](docs/users/shiroaction.png)![](docs/users/xkcoding.png) 怎么没有我?[登记](https://gitee.com/yadong.zhang/JustAuth/issues/IZ2T7) ## 开源推荐 - `JAP` 开源的登录认证中间件: [https://gitee.com/fujieid/jap](https://gitee.com/fujieid/jap) - `spring-boot-demo` 深度学习并实战 spring boot 的项目: [https://github.com/xkcoding/spring-boot-demo](https://github.com/xkcoding/spring-boot-demo) - `mica` SpringBoot 微服务高效开发工具集: [https://github.com/lets-mica/mica](https://github.com/lets-mica/mica) - `sureness` 面向restful api的高性能认证鉴权框架:[sureness](https://github.com/usthe/sureness) 更多推荐,请参考:[JustAuth - 开源推荐](https://www.justauth.cn) ## 鸣谢 - 感谢 JetBrains 提供的免费开源 License:

图片引用自lets-mica

## 其他 - [CONTRIBUTORS](https://www.justauth.cn/contributors.html) - [CHANGELOGS](https://www.justauth.cn/update.html) - [PLAN](https://gitee.com/yadong.zhang/JustAuth/issues/IUGRK) ## 贡献者列表 [![contributors](https://whnb.wang/contributors/yadong.zhang/JustAuth)](https://whnb.wang) ## Stars 趋势 ### Gitee [![Stargazers over time](https://whnb.wang/img/yadong.zhang/JustAuth?e=604800)](https://whnb.wang/yadong.zhang/JustAuth?e=604800) ### Github [![Stargazers over time](https://starchart.cc/justauth/JustAuth.svg)](https://starchart.cc/justauth/JustAuth) ### ProductHunt JustAuth - Login, so easy! | Product Hunt Embed