一、网关联合授权服务器实现OAuth2.0
在网关里使用OAuth2.0的话,需要连接到授权服务器。登录信息(username和password)是给授权服务器做认证的。
整个过程如下所示:
网关与授权服务器共同实现OAuth2.0
1.Client传登陆信息到授权服务器,授权服务器确认后会让用户选择是否进行授权;
2.若用户选择授权,授权服务器会将Access Token返回给Client。这里有一个可选步骤,为了加快网关校验token的速度,同时也是减轻授权服务器的访问压力,可以将token存到缓存服务器;
3.Client带着Access Token访问网关;
4.网关校验Access Token;
5.若Access Token通过校验,则转发请求到资源服务器。
二、网关作为授权服务器实现OAuth2.0
如果没有授权服务器,希望网关能够独自完成OAuth2.0的认证流程,这里需要做一些准备工作:
(1)Client包含登录页面和授权页面。用户正确地进行登录后,方可跳转到授权页面,让用户选择是否进行授权;
(2)在网关设置OAuth2.0的Token生成规则;
(3)Client后端需要与网关的OAuth2.0的功能模块进行通讯,给网关传相应的值,例如是client_id(客户凭证)等,用于网关识别Client。
整个过程如下所示:
网关作为授权服务器实现OAuth2.0
1.Client跳转到登陆页面;
2.用户在登陆页面填写正确的登录信息;
3.Client校验完登录信息后,跳转到授权页面,用户选择是否进行授权;
4.若用户选择授权,则Client后端将相关的值发送到API网关;
5.网关生成Access Token,将Token和重定向URL返回给Client;
6.Client带Access Token访问网关;
7.网关校验Access Token成功后,随即进行转发并返回结果。