Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Concept

凭据管理

IntegrationCredential、凭据 Store、Resolver 和 InMemory 实现的凭据管理体系。

Last updated

第三方服务的密钥(AppSecret、API Key、OAuth Token)需要安全地存储、解析和注入。Core 包提供了一套凭据模型,让密钥来源与厂商实现解耦。

模型

Vault / KMS
密钥保险库

IIntegrationCredentialStore
同步 Set/Remove

IIntegrationCredentialResolver
异步 ResolveAsync

Provider 实现

IntegrationCredential

凭据快照模型,不可变:

public sealed class IntegrationCredential
{
public IntegrationCredentialKey Key { get; }
public string Value { get; } // 实际密钥值
public DateTimeOffset? ExpiresAt { get; }
public IReadOnlyDictionary<string, string> Metadata { get; }
}

IntegrationCredentialKeyDomain + ProviderId + CredentialName 组合标识。

IIntegrationCredentialStore

同步写入/删除接口,适合在应用启动时预加载凭据:

public interface IIntegrationCredentialStore
{
void Set(IntegrationCredentialKey key, IntegrationCredential credential);
void Remove(IntegrationCredentialKey key);
bool TryGet(IntegrationCredentialKey key, out IntegrationCredential credential);
}

IIntegrationCredentialResolver

异步解析接口,适合从远程密钥服务按需获取:

public interface IIntegrationCredentialResolver
{
Task<IntegrationCredential> ResolveAsync(IntegrationCredentialKey key, CancellationToken ct = default);
}

InMemoryIntegrationCredentialStore

仅供开发环境使用。生产环境应接入 Vault、KMS 或云密钥服务。

注册

// ① 开发环境使用内存存储(不会自动注册,需显式调用)
builder.Services.AddInMemoryIntegrationCredentials();
// ② 生产环境:实现 IIntegrationCredentialStore 或 IIntegrationCredentialResolver,注册自定义实现
builder.Services.AddSingleton<IIntegrationCredentialStore, VaultCredentialStore>();

安全约定

规则原因
密钥不进入日志RequestLogSanitizer 自动脱敏敏感头和字段
密钥不进入异常详情IntegrationException.ProviderMessage 不应包含凭据
密钥不进入健康检查响应Health Check 只报告连接状态
密钥不进入构造日志Options 绑定时不打印完整密钥
字节数组密钥用后清除签名器 DisposeArray.Clear

相关

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%