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
的实现。