oauth2---密码模式和授权码模式架构分析

现在只分析常见的两种模式,密码和授权码模式

密码模式

oauth2---密码模式和授权码模式架构分析_第1张图片

SSO客户端作用是:要提供登陆页面login.html ,且登陆接口,在登录接口中调用authServer中auth/token接口,并且携带username,userpassword,client_id,client_secret

gateway网关作用是:对浏览器请求进行过滤,如果没有携带token,则一律请求SSO客户端的登陆页面,如果有携带token,则请求authServer中check/token接口,如果check token通过,再校验token的资源权限,如用户A拥有资源urlA(user-->role-->permission(urlA) ),如果用户用这个token去请求urlB,则应提示访问权限不足

资源服务器作用:主要是定义业务服务(如订单服务,商品服务....)

authServer:生成token,管理token,维护第三方客户端的APP信息

授权码模式

 oauth2---密码模式和授权码模式架构分析_第2张图片

SSO客户端作用是:要定义两个服务

1、携带client_id和login_callback_url去认证中心获取授权码code

2、携带client_id和client_secret,用户名,密码和resource_callback_url去认证中心获取token

gateway网关作用是:对浏览器请求进行过滤,如果没有携带token,则一律请求SSO客户端的登陆页面,如果有携带token,则请求authServer中check/token接口,如果check token通过,再校验token的资源权限,如用户A拥有资源urlA(user-->role-->permission(urlA) ),如果用户用这个token去请求urlB,则应提示访问权限不足

资源服务器作用:主要是定义业务服务(如订单服务,商品服务....)

authServer:提供登陆页面login.html,生成token,管理token,维护第三方客户端的APP信息

注意点

1、授权码模式 核心就是不让用户的用户名和密码被第三发系统获取,所以登陆页面放在认证中心

2、授权码code只能使用一次

3、在认证中心生成的token是短活的,refresh_token可以设置很长时间,可以是50年都可以,但是token一般设置的时间短,这样做的目的就是防止token被窃取了,当gateway检测出token失效了,则应该用refresh_token去认证中心获取新的token

4、无论是密码模式还是授权码模式都要client_id,client_secret验证

5、上述中gateway做了统一授权,认证的作用,资源服务器没有添加认证授权拦截,可以让资源代码职责单一,减少冗余代码,如果要对资源服务器对安全验证,则在内网中可以设置IP白名单访问

6、如果token是JWT形式的,则无需每次请求都去check token了,提高性能

你可能感兴趣的:(java,spring,nacos,oauth2,gateway)