Haste makes waste

理解OAuth2之前需掌握的基础概念

Posted on By lijun

参照:

1. 认证与认可

  • 认证(Authentication): 确认对方身份,比如通过密码用户名进行本人认证
  • 认可(Authorization): 赋予对方权限,赋予对特定数据操作的权限

比如,通过Github账户进行OAuth2,需要获取Repository的可读权限,但是不能追加Repository,要达成这样一个结果,实际上也进行了认证,即最先进行密码的本人认证,登陆到自己的账户中去。

2. Resource Server,Client,End User

  • Resource Server: 需要获取的数据的服务器,比如Github
  • Client: 客户端程序,比如我自己写的web app
  • End User: 即Github的账号拥有者,本人

3. 认证-认可处理流程

image

*1 本来Resource Server(用户信息,希望获取的信息的服务器),与认可服务器(发行Token的管理服务器)是需要分开考虑的,在这里想定为同一个服务器

(1). EndUser进行Access,跳转到Resource Server去进行认证。(比如访问Automation Cloud的组织URI时,如果进行了AzureAD連携的话,会跳转到AzureAD,如果是Google认证的话,会先跳转到Google) (2). Enduser将ID和密码提供给ResouceSever后,会得到认可code。 (3). 将认可Code提供给Client。 (4). Client将自己所保存的ClientID,以及Enduser上面存放的认可码提供给ResourceServer,这样Client代替终端用户,取得针对Resouce操作权限的access token。

通过了上面的认可后,Client通过向ResourceServer出示AccessToken,就能访问ResourceServer了。 另外,AccessToken都是有有效期限的,ResourceServer一般会同时发行RefreshToken,Client通过RefreshToken能较简洁的访问ResourceServer。

image