服务描述

提供加解密服务,比如在登录流程中,对密码的加解密和验证。

主要API

/internal/pin/change POST

用于1FA,修改pin。

/internal/pin/create POST

用于1FA,创建pin。

/internal/pin/policy POST

用于1FA,返回pin配置,比如minLength、maxlength。

/internal/pin/verify POST

用于1FA,验证pin。

/crypto/decrypt POST

rsa decrypt。

步骤

1. 如果请求参数keyId存在,通过keyId查询缓存和DB.ms-key表,返回MsKey。

如果keyId不存在,但是authMethod和authChannel存在,查询缓存和DB。

如果都不存在,keyId={x-source-country}_{x-source-id}_E2EE。

2. 通过MsKey.privateKey解密,并返回。

如果请求参数encryptedKey存在,通过RSA_AES算法解密。否则通过RSA算法解密。


请求参数描述
encryptionAlgoString,加密算法,RSA(默认)和RSA_AES
encryptedDataString,已加密的数据
encryptedKeyString,RSA_AES算法时使用,表示用RSA public key加密后的AES key
keyIdString,第一优先级,用于RSA加解密。比如SG_INB_E2EE。实际通过request header获取。
authMethodString,比如E2EE
authChannelString,比如INB


响应参数描述
decryptedValueString,已解密数据


/crypto/decrypto/encryption-param GET

获取public key、exponent 和modulus。

请求参数描述



响应参数描述


流程



主要业务流程


主要架构设计方案


主要数据库设计

schedma:auth

ms_key

通过在KeyIdKeyCache类loadKeysToCacheByKeyId()方法上增加注解@EventListener(ApplicationReadyEvent.class),在应用启动时查询数据库并加载数据到缓存。

FieldRemarkValue
ididUUID
use_hsmBoolean
key_algoString
key_lengthInt
private_keyString
public_keyjsonb

遇到的问题和解决方案


优缺点和改进方案分析,业界对比