配置加解密¶
配置加解密这个功能是衍生功能,目前和 nacos 服务端联系还不大,是 SDK 对配置加密后再传输,解密后再使用。
如果需要使用这个功能,需要做下面两件事。
自定义 ConfigFilter
配置 ConfigFilter
自定义 ConfigFilter¶
把配置加解密的逻辑放到自定义的 ConfigFilter 里面。 ConfigFilter 可以有多个,不同 ConfigFilter 的执行顺序是按他们的 Order 属性来决定的。
public class MyNacosConfigFilter : IConfigFilter
{
public void DoFilter(IConfigRequest request, IConfigResponse response, IConfigFilterChain filterChain)
{
if (request != null)
{
// 这里是请求的过滤,也就是在这里进行加密操作
// 不要忘了在这里覆盖请求的内容!!!!!
request.PutParameter(Nacos.V2.Config.ConfigConstants.ENCRYPTED_DATA_KEY, encryptedDataKey);
request.PutParameter(Nacos.V2.Config.ConfigConstants.CONTENT, content);
}
if (response != null)
{
// 这里是响应的过滤,也就是在这里进行解密操作
// 不要忘了在这里覆盖响应的内容!!!!!
response.PutParameter(Nacos.V2.Config.ConfigConstants.CONTENT, content);
}
}
public string GetFilterName() => nameof(MyNacosConfigFilter);
public int GetOrder() => 1;
public void Init(NacosSdkOptions options)
{
// 做一些初始化操作
}
}
配置 ConfigFilter¶
这一步主要是告诉 nacos-sdk-csharp 去那个程序集找 ConfigFilter 的实现,以及它的实现需要什么参数。
{
"NacosConfig": {
"ConfigFilterAssemblies": [ "XXXX.CusLib" ],
"ConfigFilterExtInfo": "{\"JsonPaths\":[\"ConnectionStrings.Default\"],\"Other\":\"xxxxxx\"}"
}
}
这里主要是两个配置,一个是 ConfigFilterAssemblies 指定实现类所在的程序集,一个是 ConfigFilterExtInfo 指定实现类可能需要的参数。