基于 Oauth2 搭建微服务 API 开放平台第 1 篇 —— 了解 Oauth2

 

OK,根据系列博客我们已经学习了互联网的基本安全架构:https://blog.csdn.net/biandanloveyou/category_11074285.html

接下来,我们开始搭建基于 Oauth2 的 API 开放平台。

什么是 API 开放平台?

在一些大型互联网公司,随着公司的业务发展逐渐庞大,需要和外部合伙伙伴进行合作,需要将公司的接口开放给外部其他合伙伙伴进行调用。
比如腾讯的QQ互联网、微信开放平台、蚂蚁金服开放平台 、微博开放平台,比如实现功能QQ联合登陆、微信扫码登陆、微信小程序、公众号的开发、微信支付等等。
还有就是在大型集团公司中,分为总公司,和旗下多个分公司,总公司与分公司相互通讯也可以采用开放平台形式对接口进行授权。

比如微信公众号开发平台:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

 

什么是 Oauth2?

OAuth,Open Authorization(开放授权)的简写。OAuth是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。 QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。 QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程更简单和安全。

 

Oauth2 常见概念

1、appId:商户号,一旦申请成功不可更改。

2、appKey:秘钥,可以更改。

3、授权码 Code:用于获取 accessToken

4、回调地址:授权成功后,重定向的地址。

5、openId:开放平台产生的用户唯一ID。

 

Oauth2 授权原理

OAuth 认证和授权的过程如下(以腾讯QQ为例子): 

1、用户访问第三方网站网站,想对用户存放在腾讯QQ的某些资源进行操作。

2、第三方网站向腾讯QQ请求一个临时令牌

3、腾讯QQ验证第三方网站的身份后,授予一个临时令牌。

4、第三方网站获得临时令牌后,将用户导向至腾讯QQ的授权页面请求用户授权,然后这个过程中将临时令牌返回地址发送给腾讯QQ。

5、用户在腾讯QQ的授权页面上输入自己的用户名和密码,进行授权登录。

6、授权成功后,腾讯QQ将用户导向第三方网站的返回地址。

7、第三方网站根据临时令牌从腾讯QQ那里获取访问令牌(accessToken)。 

8、腾讯QQ根据令牌和用户的授权情况(同意的情况下)授予第三方网站访问令牌。

9、第三方网站使用获取到的访问令牌访问存放在腾讯QQ的对应的用户资源。

简单来说:①生成授权链接,获取授权码。②使用授权码获取AccessToken。③使用AccessToken获取openId。④使用openId获取用户信息

 

Oauth2 四种授权方式

1、授权码模式(authorization code)用在客户端与服务端应用之间授权。一般用于网页端,让用户授权登录的方式,如上面的例子。(重点掌握)
2、密码模式(resource owner password credentials)应用直接都是受信任的,一般是微服务直接调用 API 接口进行授权。(重点掌握)

3、简化模式(implicit)用在移动app或者web app(这些app是在用户的设备上的,如在手机上调起微信来进行认证授权) 。(不常用)
4、客户端模式(client credentials)用在应用API访问。(不常用)

 

Oauth2 角色划分

1、Authotization Server:Oauth2 的认证授权中心

2、Resource Server:被授权访问的资源服务

3Resource Owner: 用户

4Client:使用API的客户端(如Android 、IOS、web app)

 

SpringCloud 如何整合 Oauth2 ?

   在Spring Cloud 环境下,需要使用 Oauth2 来实现多个微服务的统一认证授权,通过向 Oauth 服务发送某个类型的 grant type 进行集中认证和授权,从而获得 access_token,而这个 access_token 是受其他微服务信任的,后续的访问可以通过 access_token 来进行,从而实现了微服务的统一认证授权。
  客户端根据约定的 ClientID、ClientSecret、Scope来从 access Token URL 地址获取 accessToken,并经过 AuthURL 认证,用得到的 access_token 来访问其他服务资源的接口。
 Spring Cloud oauth2 需要依赖Spring Security。

 

OK,关于 Oauth2 的理论讲解到这。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值