3.4 KiB
3.4 KiB
贷款定价敏感字段加密后端实施记录
修改内容
- 在
ruoyi-loan-pricing新增SensitiveFieldCryptoService,统一处理custName、idNum的 AES/ECB/PKCS5Padding + Base64 加解密。 - 在
ruoyi-loan-pricing新增LoanPricingSensitiveDisplayService,统一处理个人姓名、企业名称、身份证号、统一社会信用代码的脱敏展示。 - 在
LoanPricingWorkflowServiceImpl的创建链路对custName、idNum加密后入库,并在列表、详情链路解密后做脱敏返回。 - 在
LoanPricingWorkflowServiceImpl的详情链路补充对ModelRetailOutputFields、ModelCorpOutputFields基本信息中的custName、idNum进行脱敏,避免模型输出区域继续暴露明文。 - 在
LoanPricingModelService调用模型前显式解密custName、idNum,保证模型入参不接收密文;同时补齐ModelInvokeDTO.idNum字段。 - 修复模型调用后更新
modelOutputId时把解密后的custName、idNum明文回写数据库的问题,改为仅更新modelOutputId。 - 在
LoanPricingWorkflowMapper.xml和服务查询条件中移除按custName查询,改为按custIsn查询。 - 新增
sql/clear_loan_pricing_workflow_history.sql,用于清理贷款定价流程及模型输出历史数据。
新增测试
SensitiveFieldCryptoServiceTestLoanPricingSensitiveDisplayServiceTestLoanPricingWorkflowServiceImplTestLoanPricingModelServiceTest
验证结果
- 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=SensitiveFieldCryptoServiceTest,LoanPricingSensitiveDisplayServiceTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest,LoanPricingModelServiceTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=SensitiveFieldCryptoServiceTest,LoanPricingSensitiveDisplayServiceTest,LoanPricingWorkflowServiceImplTest,LoanPricingModelServiceTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 从根工程重新打包
ruoyi-admin.jar后,以18080端口启动临时后端实例,并将model.url指向http://localhost:18080/rate/pricing/mock/invokeModel完成联调。 - 个人流程与企业流程创建成功,接口即时返回的
custName、idNum为密文。 - 调用参数错误场景
/loanPricing/workflow/create/personal且缺少custIsn,接口返回500,错误信息为“客户内码不能为空”。 - 调用列表接口按
custIsn查询,确认个人返回custName为张*,企业返回custName为测试****公司。 - 调用详情接口,确认流程主信息中个人返回
张* / 1101********1234,企业返回测试****公司 / 91*************00X。 - 调用详情接口,确认模型输出“基本信息”中个人返回
张* / 3301********1234,企业返回北京******公司 / 91*************XXX。
备注
- 联调过程中发现
serialNum仍使用毫秒时间戳生成,并发创建可能触发uk_serial_num冲突;该问题为本次验证中暴露的既有风险,本次未纳入敏感字段加密方案范围内处理。