服务描述
提供加解密服务,比如在登录流程中,对密码的加解密和验证。
主要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算法解密。
| 请求参数 | 描述 |
|---|---|
| encryptionAlgo | String,加密算法,RSA(默认)和RSA_AES |
| encryptedData | String,已加密的数据 |
| encryptedKey | String,RSA_AES算法时使用,表示用RSA public key加密后的AES key |
| keyId | String,第一优先级,用于RSA加解密。比如SG_INB_E2EE。实际通过request header获取。 |
| authMethod | String,比如E2EE |
| authChannel | String,比如INB |
| 响应参数 | 描述 |
|---|---|
| decryptedValue | String,已解密数据 |
/crypto/decrypto/encryption-param GET
获取public key、exponent 和modulus。
| 请求参数 | 描述 |
|---|---|
| 响应参数 | 描述 |
|---|---|
流程
主要业务流程
主要架构设计方案
主要数据库设计
schedma:auth
ms_key
通过在KeyIdKeyCache类loadKeysToCacheByKeyId()方法上增加注解@EventListener(ApplicationReadyEvent.class),在应用启动时查询数据库并加载数据到缓存。
| Field | Remark | Value |
|---|---|---|
| id | id | UUID |
| use_hsm | Boolean | |
| key_algo | String | |
| key_length | Int | |
| private_key | String | |
| public_key | jsonb |