# 扩展认证模式
编排中,如 HTTP 请求节点里可以看到有认证模式的选项,我们现在默认提供的认证模式有两种,分别是【本地身份认证】和【客户端身份认证】:

- 本地身份认证:若当前请求携带身份即 Access Token,则将该 at 添加到请求头中
- 客户端身份认证:获取工程当前客户端的 Access Token,将该 at 添加到请求头中
上列几种认证模式基本能覆盖大部分场景,针对更复杂的场景我们可以拓展认证模式来使得请求正常。
# 自定义&拓展
我们需要编写 Java 代码实现接口并注册来自定义认证模式。需要特别注意的是,每个认证模式都有固定的编码key,自定义模式的key建议携带项目特定前缀,以防止与低代码的内置模式产生冲突,默认模式 key 如下:
- 本地身份认证:
local - 客户端身份认证:
clientOnly
假设拓展一个 key 为demoAuth的认证模式,示例如下:
- 添加自定义认证解析类
import openfuse.serverlessworkflow.core.auth.AuthResolver;
/**
* 自定义认证解析类
*/
public class DemoAuthResolver implements AuthResolver {
@Override
public void resolve(AuthResolverContext context) {
Object request = context.getRequest();
if (request instanceof HttpMessage) {
// todo:
String accessToken = null;
headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
}
}
/**
* 根据 key 匹配到该解析类,随后将执行 #resolve(AuthResolverContext) 方法
*/
@Override
public boolean supports(AuthResolverContext context) {
return "demoAuth".equals(context.getMetadata().get("localMode"));
}
}
注册为 bean:
@Bean
DemoAuthResolver demoAuthResolver() {
return new DemoAuthResolver();
}
- 在
classpath*:serverless/auth.json添加配置,使得界面增加显示自定义认证模式:
[
{
"name": "demoAuth",
"title": "示例认证模式",
"scheme": "bearer",
"properties": {
"metadata": {
"localMode": "demoAuth"
},
"token": "custom-extend-auth"
}
}
]
上例 json 中,"scheme": "bearer"表示为 bearer 类的认证方式,"token": "custom-extend-auth"表示为拓展的认证方式,这两个一般不需要修改,其他配置根据情况调整。