Skip to content

Latest commit

 

History

History

bus-oauth

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

项目说明

如你所见,它仅仅是一个第三方授权登录工具类库,它可以让我们脱离繁琐的第三方登录SDK,让登录变得So easy!

特点

废话不多说,就俩字:

  1. :已集成十多家第三方平台(国内外常用的基本都已包含),仍然还在持续扩展中!
  2. :API就是奔着最简单去设计的(见后面快速开始),尽量让您用起来没有障碍感!

快速开始

  • 引入依赖
<dependency>
    <groupId>org.aoju</groupId>
    <artifactId>bus-oauth</artifactId>
    <version>8.0.0</version>
</dependency>
  • 调用api
// 创建授权request
Provider provider=new GiteeProvider(Context.builder()
        .clientId("clientId")
        .clientSecret("clientSecret")
        .redirectUri("redirectUri")
        .build());
// 生成授权页面
        provider.authorize("state");
// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用Callback类作为回调接口的参数
// 注:默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state
        provider.login(callback);

获取授权链接

String authorizeUrl = shooting.authorize("state");

获取到authorizeUrl后,可以手动实现redirect到authorizeUrl

注:state建议必传!stateOAuth的流程中的主要作用就是保证请求完整性,防止CSRF**风险,此处传的state将在回调时传回

登录(获取用户信息)

provider.login(callback);

授权登录后会返回code(auth_code(仅限支付宝)、authorization_code(仅限华为))、state,1.8.0版本后,用AuthCallback类作为回调接口的入参

注:第三方平台中配置的授权回调地址,以本文为例,在创建授权应用时的回调地址应为:[host]/callback/gitee

刷新token

注:refresh功能,并不是每个平台都支持

provider.refresh(AccToken.builder().refreshToken(token).build());

取消授权

注:revoke功能,并不是每个平台都支持

provider.revoke(AccToken.builder().accessToken(token).build());

API列表

平台 API SDK
gitee GiteeProvider 参考文档
github GithubProvider 参考文档
weibo WeiboProvider 参考文档
dingtalk DingTalkProvider 参考文档
baidu BaiduProvider 参考文档
coding CodingProvider 参考文档
tencentCloud TencentCloudProvider 参考文档
oschina OschinaProvider 参考文档
alipay AlipayProvider 参考文档
qq QqProvider 参考文档
wechat WeChatProvider 参考文档
taobao TaobaoProvider 参考文档
google GoogleProvider 参考文档
facebook FacebookProvider 参考文档
douyin DouyinProvider 参考文档
linkedin LinkedinProvider 参考文档
microsoft MicrosoftProvider 参考文档
mi MiProvider 参考文档
toutiao ToutiaoProvider 参考文档
teambition TeambitionProvider 参考文档
renren RenrenProvider 参考文档
pinterest PinterestProvider 参考文档
stackoverflow StackOverflowProvider 参考文档
huawei HuaweiProvider 参考文档
微信开放平台 WeChatOPProvider 参考文档
微信公众平台 WeChatMpProvider 参考文档
企业微信 WeChatEEProvider 参考文档
kujiale KujialeProvider 参考文档
gitlab GitlabProvider 参考文档
meituan MeituanProvider 参考文档
eleme ElemeProvider 参考文档
csdn CsdnProvider

_请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经下线。如果以前申请过的应用,可以继续使用,但是不再支持申请新的应用, 本项目中的CSDN登录只能针对少部分用户使用了

关于OAuth

请先查阅以下资料:

OAuth 2的授权流程

参与的角色

  • Resource Owner 资源所有者,即代表授权客户端访问本身资源信息的用户(User),也就是应用场景中的“开发者A
  • Resource Server 资源服务器,托管受保护的用户账号信息,比如Github
  • Authorization Server 授权服务器,验证用户身份然后为客户端派发资源访问令牌,比如Github
  • Resource ServerAuthorization Server 可以是同一台服务器,也可以是不同的服务器,视具体的授权平台而有所差异
  • Client 客户端,即代表意图访问受限资源的第三方应用

授权流程

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

上面的流程图取自The OAuth 2.0 Authorization Framework#1.2

  • (A) 用户打开客户端以后,客户端要求用户给予授权。
  • (B) 用户同意给予客户端授权。
  • (C) 客户端使用上一步获得的授权,向认证服务器申请令牌。
  • (D) 认证服务器客户端进行认证以后,确认无误,同意发放令牌
  • (E) 客户端使用令牌,向资源服务器申请获取资源。
  • (F) 资源服务器确认令牌无误,同意向客户端开放资源。

授权许可 Authorization Grant

  • Authorization Code
    • 结合普通服务器端应用使用(web端常用的授权方式)
  • Implicit
    • 结合移动应用或 Web App 使用
  • Resource Owner Password Credentials
    • 适用于受信任客户端应用,例如同个组织的内部或外部应用
  • Client Credentials
    • 适用于客户端调用主服务API型应用(比如百度API Store)

致谢