1.说明

在平台中,网关的作用有以下几个:

1.路由访问后端

2.访问令牌认证

3.接口授权

4.防止XSS注入

2. 详细介绍

2.1 路由访问后端

我们是通过NACOS 对路由进行管理。

路由配置管理

在这里配置的路由访问。

1.条件
比如说是路径,意思是当 客户端访问路径符合输入的规则时,会应用这个路由。

2.过滤器

比如截断路径,参数为1 ,这个截断路径会将 /api-bpm 截取掉。

3.目标路径

意思是当客户访问 /api-bpm/bpm/core/bpmdef/query 的时候,网关会访问到微服务应用。

这个配置在保存之后,他的数据会存放到 nacos dataId 为 scg-routes 的配置数据中。

动态路由的相关代码在网关模块

com.redxun.gateway.route.NacosRouteDefinitionRepository

2.2 访问令牌认证

在用户认证后,网关会对需要认证的页面进行令牌有效性的认证,如果没有权限则显示相关提示信息。

1.用户登录后会取得一个认证的token令牌。
2.每次在访问后端接口时都会在 请求头中发送这个令牌。
3.网关会对这个令牌进行校验。

  • 校验令牌是否存在
  • 校验令牌是否过期

相关代码:

com.redxun.gateway.auth.CustomAuthenticationManager

2.3 接口授权

接口授权分为几种情况:

1.不需要认证的接口配置

这种说的是有些接口时允许用户直接访问不用登录的,比如 用户登录接口,这种接口是对外直接开放的。

2.需要授权的接口

这里又分为了两种情况。

1.只需要登录就可以访问。
2.需要对接口授权授权才能访问。

2.3.1 忽略授权接口配置

这个配置在 网关 的 application.yml 文件中做配置。

在上图中配置了 ignore 的 httpUrls 的地址是不需要认证可以直接访问的。

2.3.2 需要授权配置

在程序访问后端时,我们可以配置是否需要进行授权,如果不授权,那么我们可以只要在登录之后就可以访问所有的API接口。
如果授权,那么我们需要对接口进行授权,那么没有授权的URL就不能进行访问。

授权的配置

配置参数 配置说明
auth.urlPermission.enable 是否需要授权访问,enable 不需要授权
auth.urlPermission. ignoreUrls 这里配置需要授权时,可以忽略授权的地址

相关代码可以参考网关代码:

com.redxun.gateway.auth.PermissionAuthManager

2.4. 防止XSS注入

在程序访问时,如果客户在表单输入HTML或者脚本数据,那么这个时候会导致XSS注入的风险。因此我们需要防止XSS注入,当然我们在设计表单时,这些地方时需要 html的,那么这个时候这些地址是需要忽略的,这些地址我们需要通过 API授权来解决。

在application.yml 中。

security.ignore.xssUrls , 这里时需要忽略xss注入的地址,这些地址是需要保存HTML的。

防止XSS注入是通过网关使用全局过滤器来实现的。

参考网关代码:
com.redxun.gateway.filter.XssRequestGlobalFilter 的实现。

文档更新时间: 2021-07-09 14:27   作者:zyg