安全认证(kems-plug-auth-xxx)
功能介绍
基于koca
提供了servlet
和webflux
两个版本的安全认证组件,KEMS
也对应实现了kems-plug-auth-webflux
和kems-plug-auth-security
两个版本的插件,除坐标不同之外,提供的功能及使用配置完全一致:
登录认证(authentication)对登录部分做认证扩展,对部门现用的登录过程作统一集成。
API鉴权(authorization)
API授权
的管理工作在PMI
中完成,此处仅完成鉴权认证工作。koca
安全认证更多功能,请参考安全认证
引用说明
maven配置
webflux
版本(springcloud gateway基于webflux实现,故使用webflux版本):
<dependency>
<groupId>com.kingengine.kems.plug</groupId>
<artifactId>kems-plug-auth-webflux</artifactId>
</dependency>
servlet
版本:
<dependency>
<groupId>com.kingengine.kems.plug</groupId>
<artifactId>kems-plug-auth-security</artifactId>
</dependency>
yml配置
koca:
security:
auth:
api-access-control:
enabled: true #是否开启api鉴权,默认开启
strategy-name: kems-api-control #kems扩展权限校验策略,默认为default
##其他配置
security:
##其他配置
auth-strategy:
strategy-name: kems-username-password # kems扩展用户名密码登录策略
auth-url: http://modules-system/user/login/password #用户名密码登录URL,服务调用方式
mutil-login:
- type: phoneAuthcode #手机验证码登录
login-url: /auth/phone/authcode
strategy-name: kems-phone-authcode #kems扩展手机验证码登录策略
auth-url: http://modules-system/user/login/phoneAuthCode #手机验证码登录校验URL,服务调用方式
考虑到网关与提供登录策略的接口服务不一定共用注册中心,所以该插件额外提供了直接调用方式。配置时加上前缀
url:
即可。如:auth-url: url: http://localhost:8003/user/login/phoneAuthCode
服务间凭据认证(kems-plug-auth-request)
功能介绍
项目上线运行中,如何应对非法请求并将其过滤,这是一个很重要的步骤。而服务被外界调用的途径,一般来说分为以下两种情况:
- 请求从网关进入,然后网关调用目标服务。这种情况下可以在网关对其进行拦截,保证进入到目标服务的请求是合法的。
- 直接请求目标服务。这种情况下突破了网关,就需要在目标服务入口处增加认证,对请求进行拦截。
此插件引入“凭据”定义,在请求发出前、后对请求头作设置和校验,进而实现服务间认证能力。
认证基础能力由
kems-plug-auth-request-core
提供。本插件仅针对
feign
请求作自动设置,RestTemplate
、HttpClient
等可以基于kems-plug-auth-request-core
完成实现。
引用说明
maven配置
<dependency>
<groupId>com.kingengine.kems.plug</groupId>
<artifactId>kems-plug-auth-request4feign</artifactId>
</dependency>
yml配置
request:
credential:
enabled: true # 是否启用认证。默认启用
key: kingengine # key。默认为kingengine
salt: kingengine # 盐。默认为kingengine
include-path-patterns: /** # 添加校验的路径正则(优先级高于排除的)。默认为/**,即拦截所有请求
exclude-path-patterns: /user/login # 排除校验的路径正则(优先级低于校验的)。默认为空,即不过滤