15.8k+ 超全的第三方登录开源库,开箱即用!

霖轩软件
0 评论
/ /
197 阅读
/
4749 字
03 2024-04

 

今天为大家带来一款超全的第三方平台登录开源库:JustAuth,使用 Java 语言开发,支持国内外数十家知名的第三方平台的 OAuth 登录,让我们脱离繁琐的第三方登录 SDK,登录变得更简单!

JustAuth 集成了诸如:Github、Gitee、支付宝、新浪微博、微信、Google、Facebook、Twitter、StackOverflow 等国内外数十家第三方平台,目前还在持续扩展中!

 

JustAuth 开箱即用,一杯茶的功夫可快速接入第三方系统。在2019年曾被 Gitee 社区评选为最有价值开源项目。

目前该项目已在 Gitee 上获得了 9.3K stars,2.9k forks。在 GitHub 上更是斩获了 15.8k stars,2.7k forks。

 

️ 功能特性

  • 开箱即用,快速接入
  • 提供统一接口,支持接入任意 OAuth 网站,快速实现 OAuth 登录功能
  • 集成国内外数十家知名的第三方平台的 OAuth 登录
  • 自定义 State 缓存,支持各种分布式缓存组件
  • 自定义 OAuth 平台,更容易适配自有的 OAuth 服务
  • 自定义 Http 实现,选择权完全交给开发者,不会单独依赖某一具体实现
  • 自定义 Scope,支持更完善的授权体系,以适配更多的业务场景
  • 代码规范、结构清晰、逻辑简单,严格遵守阿里巴巴编码规约

OAuth2 流程

授权流程:

 

流程解析:

(A) 用户打开客户端以后,客户端要求用户给予授权

(B) 用户同意给予客户端授权

(C) 客户端使用上一步获得的授权,向认证服务器申请令牌

(D) 认证服务器对客户端进行认证以后,确认无误,同意发放令牌

(E) 客户端使用令牌,向资源服务器申请获取资源

(F) 资源服务器确认令牌无误,同意向客户端开放资源

快速体验

开发环境:

  • JDK 1.7+
  • Maven 3.5+

1、在 pom.xml 文件中引入依赖

目前推荐使用稳定版 1.16.6

<dependency>    <groupId>me.zhyd.oauth</groupId>    <artifactId>JustAuth</artifactId>    <version>{latest-version}</version></dependency>

2、引入 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>

3、调用api

普通方式:

在第三放平台申请开发者账号,创建相关的应用后,获取clientId、clientSecret、redirectUri(或AppID、AppKey和网站回调域)

// 创建授权requestAuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()        .clientId("clientId/AppID")        .clientSecret("clientSecret/AppKey")        .redirectUri("redirectUri/网站回调域")        .build());// 生成授权页面authRequest.authorize("state");// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的stateauthRequest.login(callback);

代理方式(针对国外平台,如微软、谷歌、脸书等):

AuthRequest authRequest = new AuthGoogleRequest(AuthConfig.builder()                .clientId("Client ID")                .clientSecret("Client Secret")                .redirectUri("应用回调地址")                // 针对国外平台配置代理                .httpConfig(HttpConfig.builder()                        // Http 请求超时时间                        .timeout(15000)                        // host 和 port 请修改为开发环境的参数                        .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)))                        .build())                .build());

详细的demo参考:

https://github.com/justauth/JustAuth-demo