本文最后更新于 2023-12-09,文章内容可能已经过时。

认证授权方式:

主要介绍在不同的应用场景下,如何进行网关搭建中的用户身份体系认证.

1.简单token模式:

最简单的情况,适用于一个系统内,一套前端对接一套后端系统.使用token来进行身份校验.

1.1 角色:

主要有三个角色,用户,前端,后端.

1.2 工作流程:

1.用户进入登录页面,输入账号密码

2.前端带着账号密码请求后端登录接口,登陆成功后后端返回token,存储在前端.

3.接下来访问其它接口的时候前端携带着token访问,后端校验后返回具体数据.

2.跨系统api对接:AppID、AppKey和AppSecret:

适用于系统之间对接,验证系统身份的情形.

通常以api为单位.

2.1 角色:

主要有两个角色,api提供者,api使用者.

2.2 工作流程:

1.api提供者在提供api的同时,建立生成AppID、AppKey和AppSecret的相关代码.

2.api使用者通过某些方式注册并获取自己的AppID、AppKey和AppSecret.

3.api使用者携带AppKey和AppSecret访问相关接口,key相当于用户名,表明了这个用户的权限,secret相当于密码,表明了这个用户的身份.

4.api提供者校验AppKey和AppSecret,通过后返回相关的信息.

也可以提供类似token和reflshtoken的免登陆方式.

3.跨系统用户对接:oauth2:

这种情形主要适用于第三方用户登录情况,比如系统a支持系统b登录,两边的相关配置.

或者说,在资源提供者

OAuth 2.0(Open Authorization)是一种用于授权的开放标准,允许用户授权第三方应用访问其在某一网站上存储的私有资源,而无需将用户名和密码提供给第三方应用。OAuth 2.0 主要用于身份验证(Authentication)和授权(Authorization)。

3.1角色:

  1. 资源所有者(Resource Owner): 拥有资源的用户,可以是最终用户或者应用程序。 即用户

  2. 客户端(Client): 请求访问资源的第三方应用,需要得到资源所有者的授权才能访问资源。即英雄联盟前端和英雄联盟后端

  3. 授权服务器(Authorization Server): 验证资源所有者的身份并颁发访问令牌给客户端。qq后端

  4. 资源服务器(Resource Server): 存储资源,能够接收和响应使用访问令牌请求的受保护资源。qq后端

oauth2的工作流程理解起来有些复杂,用通俗易懂的方式理解.

以qq登录英雄联盟为例.

主要有五个角色:用户,英雄联盟前端,英雄联盟后端,qq前端,qq后端.

3.2 工作流程:

3.2.1 授权码模式:

1.用户在英雄联盟前端点击qq登录

2.英雄联盟前端处理,弹出qq前端的登录页面

3.用户在qq前端的登录页面进行登录.qq前端发送信息到qq后端.

4.qq后端调用回调接口,把生成的授权码返回给英雄联盟后端.

5.英雄联盟后端拿着刚刚获得的授权码请求qq后端,获得令牌.

6.英雄联盟后端拿着令牌访问qq后端的资源服务器,获取用户信息.

7.英雄联盟后端拿着用户信息在自己的系统内进行处理.并把最终的处理信息返回给英雄联盟前端.

3.2.2 简化模式:

相当于去掉了上面授权码模式中的英雄联盟后端,直接由浏览器去请求qq后端.

3.3.3 密码模式:

相当于去掉了qq的前端,而是改成英雄联盟前端,用户输入密码后,由英雄联盟后端携带着账号密码去访问qq后端.并获取相应的信息.

这通常用在用户对客户端高度信任的情况.

3.3.4 客户端模式;

与用户授权无关的模式,而与AppID、AppKey和AppSecret模式相似,是两个客户端之间互相授权的方式.