datai/docs/sql/2026-01-21-003-02-salesforce-strategy-login-database.md

6.9 KiB
Raw Permalink Blame History

Salesforce 策略模式登录数据库结构说明

元数据

  • 需求编号2026-01-21-003-02
  • 创建时间2026-01-22
  • 创建人SSOT 架构师
  • 状态:已完成

数据库概述

Salesforce 策略模式登录功能不需要创建新的数据库表,登录信息会回写到已有的 datai_sf_system_config 表中(在子需求 2026-01-21-003-01 中已创建)。

已有表结构

datai_sf_system_configSalesforce 系统配置表)

该表已在子需求 2026-01-21-003-01 中创建,包含以下字段:

字段名 类型 说明 登录功能使用
id BIGINT(20) 主键ID -
system_name VARCHAR(100) 系统名称(唯一) 用于读取系统配置
system_type VARCHAR(50) 系统类型(用户自定义) -
org_type CHAR(1) 组织类型S=源 org T=目标 org -
login_type VARCHAR(20) 登录类型oauth2/session_id/cli 用于选择登录策略
client_id VARCHAR(255) OAuth 客户端 ID OAuth2 登录使用
client_secret VARCHAR(500) OAuth 客户端密钥(加密存储) OAuth2 登录使用
username VARCHAR(100) 用户名 OAuth2 Password 登录使用
password VARCHAR(500) 密码(加密存储) OAuth2 Password 登录使用
security_token VARCHAR(500) 安全令牌(加密存储) OAuth2 Password 登录使用
session_id VARCHAR(255) Session IDAccess Token 登录成功后回写
server_url VARCHAR(500) 服务器 URLInstance URL 登录成功后回写
access_token VARCHAR(255) 访问令牌Session ID 登录成功后回写
refresh_token VARCHAR(255) 刷新令牌 OAuth2 登录成功后回写
token_expires_at DATETIME 令牌过期时间 OAuth2 登录成功后回写
sf_user_id VARCHAR(100) Salesforce 用户 ID用于缓存键 登录成功后回写
user_id VARCHAR(100) 用户 ID 登录成功后回写
org_id VARCHAR(100) 组织 ID 登录成功后回写
org_name VARCHAR(255) 组织名称 登录成功后回写
status CHAR(1) 状态0正常 1停用 -
sort_order INT(11) 排序 -
remark VARCHAR(500) 备注 -
create_by VARCHAR(64) 创建者 -
create_time DATETIME 创建时间 -
update_by VARCHAR(64) 更新者 -
update_time DATETIME 更新时间 -

数据流说明

登录流程数据流

登录流程数据流
├─ 1. 读取系统配置
│  └─ 从 datai_sf_system_config 表读取配置
│     ├─ 根据 system_name 查询配置
│     ├─ 获取 client_id、client_secret、username、password、security_token
│     └─ 使用 EncryptUtils 解密敏感信息
├─ 2. 执行登录
│  ├─ OAuth2 Password 登录
│  │  ├─ 调用 Salesforce OAuth2 API
│  │  ├─ 获取 access_token、refresh_token、instance_url、expires_at
│  │  └─ 调用 Identity API 获取用户信息
│  ├─ OAuth2 Client Credentials 登录
│  │  ├─ 调用 Salesforce OAuth2 API
│  │  ├─ 获取 access_token、refresh_token、instance_url、expires_at
│  │  └─ 调用 Identity API 获取用户信息
│  ├─ OAuth2 Authorization Code 登录
│  │  ├─ 调用 Salesforce OAuth2 API
│  │  ├─ 获取 access_token、refresh_token、instance_url、expires_at
│  │  └─ 调用 Identity API 获取用户信息
│  └─ Session ID 登录
│     ├─ 使用已有的 session_id 和 server_url
│     └─ 调用 Identity API 验证并获取用户信息
└─ 3. 回写登录信息
   └─ 更新 datai_sf_system_config 表
      ├─ session_id: 访问令牌
      ├─ server_url: 实例 URL
      ├─ access_token: 访问令牌
      ├─ refresh_token: 刷新令牌(仅 OAuth2 登录)
      ├─ token_expires_at: 过期时间(仅 OAuth2 登录)
      ├─ sf_user_id: 用户 ID
      ├─ user_id: 用户名
      ├─ org_id: 组织 ID
      ├─ org_name: 组织名称
      └─ update_time: 更新时间

刷新令牌流程数据流

刷新令牌流程数据流
├─ 1. 读取系统配置
│  └─ 从 datai_sf_system_config 表读取配置
│     ├─ 根据 system_name 查询配置
│     ├─ 获取 client_id、client_secret、refresh_token
│     └─ 使用 EncryptUtils 解密敏感信息
├─ 2. 执行刷新令牌
│  └─ 调用 Salesforce OAuth2 API
│     └─ 获取新的 access_token、refresh_token、instance_url、expires_at
└─ 3. 回写登录信息
   └─ 更新 datai_sf_system_config 表
      ├─ session_id: 新的访问令牌
      ├─ server_url: 新的实例 URL
      ├─ access_token: 新的访问令牌
      ├─ refresh_token: 新的刷新令牌
      ├─ token_expires_at: 新的过期时间
      └─ update_time: 更新时间

登出流程数据流

登出流程数据流
├─ 1. 读取系统配置
│  └─ 从 datai_sf_system_config 表读取配置
│     └─ 根据 system_name 查询配置
├─ 2. 执行登出
│  └─ 调用 Salesforce 登出 API
└─ 3. 清空登录信息
   └─ 更新 datai_sf_system_config 表
      ├─ session_id: NULL
      ├─ server_url: NULL
      ├─ access_token: NULL
      ├─ refresh_token: NULL
      ├─ token_expires_at: NULL
      └─ update_time: 更新时间

索引说明

已有索引

  • 主键索引:id
  • 唯一索引:uk_system_name (system_name)
  • 普通索引:idx_system_type (system_type)
  • 普通索引:idx_org_type (org_type)
  • 普通索引:idx_login_type (login_type)
  • 普通索引:idx_status (status)
  • 普通索引:idx_sf_user_id (sf_user_id)

索引使用场景

  • uk_system_name:用于根据系统名称快速查询配置
  • idx_login_type:用于根据登录类型快速查询配置
  • idx_sf_user_id:用于根据 Salesforce 用户 ID 快速查询配置(后续缓存优化使用)

数据安全

敏感信息加密

以下字段使用 EncryptUtils 加密存储:

  • client_secretOAuth 客户端密钥
  • password:密码
  • security_token:安全令牌

加密流程

加密流程
├─ 存储时
│  └─ 使用 EncryptUtils.encrypt() 加密敏感信息
│     └─ 存储加密后的值到数据库
└─ 读取时
   └─ 使用 EncryptUtils.decrypt() 解密敏感信息
      └─ 获取原始值用于登录

总结

Salesforce 策略模式登录功能不需要创建新的数据库表,使用已有的 datai_sf_system_config 表存储登录信息。登录成功后,会将 Session ID、Server URL、用户信息、组织信息等回写到该表中。

相关文档