mirror of
https://github.com/insistence/RuoYi-Vue3-FastAPI.git
synced 2026-10-09 11:02:22 +00:00
* feat: 新增统一认证中心 * perf: 优化代码 * fix: 修复问题 * perf: 优化页面 * fix: 修复部分接口缺失Request参数的问题 * perf: 优化访问控制机制 * perf: 优化代码 * fix: 修复 Logout Token 缺少 exp * perf&fix: 优化和修复 * perf: 优化代码 * perf: 优化代码 * fix: 修复测试问题
286 lines
15 KiB
Bash
286 lines
15 KiB
Bash
# -------- 应用配置 --------
|
||
# 应用运行环境
|
||
APP_ENV = 'prod'
|
||
# 应用名称
|
||
APP_NAME = 'RuoYi-FastAPI'
|
||
# 应用代理路径
|
||
APP_ROOT_PATH = '/docker-api'
|
||
# 应用主机
|
||
APP_HOST = '0.0.0.0'
|
||
# 应用端口
|
||
APP_PORT = 9099
|
||
# 应用版本
|
||
APP_VERSION= '1.10.0'
|
||
# 发布代际标识(生产滚动发布建议注入镜像 digest 或 commit SHA;留空时使用源码指纹)
|
||
APP_RELEASE_ID = ''
|
||
# 应用是否开启热重载
|
||
APP_RELOAD = false
|
||
# 应用工作进程数
|
||
APP_WORKERS = 1
|
||
# 应用是否开启IP归属区域查询
|
||
APP_IP_LOCATION_QUERY = true
|
||
# 应用是否为演示模式
|
||
APP_DEMO_MODE = false
|
||
# 应用是否允许账号同时登录
|
||
APP_SAME_TIME_LOGIN = true
|
||
# 应用是否禁用Swagger文档
|
||
APP_DISABLE_SWAGGER = true
|
||
# 应用是否禁用ReDoc文档
|
||
APP_DISABLE_REDOC = true
|
||
# 可信代理IP列表,多个值使用逗号分隔
|
||
APP_TRUSTED_PROXY_IPS = '127.0.0.1,::1'
|
||
# 可信代理跳数,单层Nginx代理通常为1
|
||
APP_TRUSTED_PROXY_HOPS = 1
|
||
# 首次启动默认安装并启用的内置插件,多个值使用逗号分隔,留空表示不自动启用
|
||
APP_DEFAULT_ENABLED_PLUGINS = 'ai'
|
||
# 应用业务时区,使用IANA时区名称(如Asia/Shanghai),用于时间展示、日期范围查询和定时任务默认时区
|
||
APP_TIMEZONE = 'Asia/Shanghai'
|
||
|
||
# -------- Jwt配置 --------
|
||
# Jwt秘钥,留空时自动生成;也可使用 openssl rand -hex 32 手动生成
|
||
JWT_SECRET_KEY = ''
|
||
# Jwt算法
|
||
JWT_ALGORITHM = 'HS256'
|
||
# 令牌过期时间
|
||
JWT_EXPIRE_MINUTES = 1440
|
||
# redis中令牌过期时间
|
||
JWT_REDIS_EXPIRE_MINUTES = 30
|
||
|
||
|
||
# -------- 数据库配置 --------
|
||
# 默认数据源名称
|
||
DB_DEFAULT_SOURCE = 'primary'
|
||
# 数据源配置(每个节点完整保留数据库连接字段)
|
||
# db_type:数据库类型,可选 mysql、postgresql
|
||
# db_host:数据库主机地址
|
||
# db_port:数据库端口
|
||
# db_username:数据库用户名
|
||
# db_password:数据库密码
|
||
# db_database:数据库名称
|
||
# db_echo:是否输出SQLAlchemy SQL日志
|
||
# db_connect_timeout:建立数据库连接的超时时间(秒)
|
||
# db_max_overflow:连接池允许的最大溢出连接数
|
||
# db_pool_size:连接池常驻连接数
|
||
# db_pool_recycle:连接回收间隔(秒),-1表示禁用回收
|
||
# db_pool_timeout:获取连接的超时时间(秒)
|
||
# db_required:启动时连接失败是否阻止应用启动
|
||
DB_SOURCES = '{
|
||
"primary": {
|
||
"db_type": "postgresql",
|
||
"db_host": "ruoyi-pg",
|
||
"db_port": 5432,
|
||
"db_username": "postgres",
|
||
"db_password": "root",
|
||
"db_database": "ruoyi-fastapi",
|
||
"db_echo": true,
|
||
"db_connect_timeout": 10,
|
||
"db_max_overflow": 10,
|
||
"db_pool_size": 50,
|
||
"db_pool_recycle": 3600,
|
||
"db_pool_timeout": 30,
|
||
"db_required": true
|
||
}
|
||
}'
|
||
|
||
# -------- Redis配置 --------
|
||
# Redis主机
|
||
REDIS_HOST = 'ruoyi-redis'
|
||
# Redis端口
|
||
REDIS_PORT = 6379
|
||
# Redis用户名
|
||
REDIS_USERNAME = ''
|
||
# Redis密码
|
||
REDIS_PASSWORD = ''
|
||
# Redis数据库
|
||
REDIS_DATABASE = 2
|
||
|
||
# -------- 日志配置 --------
|
||
# 是否启用日志脱敏
|
||
LOG_MASK_ENABLED = true
|
||
# 日志脱敏占位符
|
||
LOG_MASK_PLACEHOLDER = '******'
|
||
# 以下三项为互补关系(非互斥):
|
||
# 1) LOG_MASK_FIELDS:命中后执行全量脱敏
|
||
# 2) LOG_PARTIAL_MASK_FIELDS:命中后执行部分脱敏
|
||
# 3) LOG_CONFIG_SECRET_PATTERNS:按 configKey 关键词决定是否脱敏 configValue
|
||
# 全量脱敏字段,多个值使用逗号分隔
|
||
LOG_MASK_FIELDS = 'password,old_password,new_password,confirm_password,api_key,token,access_token,refresh_token,authorization,client_secret,secret,secret_key,private_key,private_key_pem,credential,credentials,sms_code,captcha_code,system_prompt'
|
||
# 部分脱敏字段,多个值使用逗号分隔
|
||
# 当前默认不对IP脱敏;如后期需要开启,可直接追加 ip,ipaddr,oper_ip,login_ip 并重启服务
|
||
LOG_PARTIAL_MASK_FIELDS = 'phonenumber,phone,mobile,email'
|
||
# 按配置键名识别敏感配置的关键词,多个值使用逗号分隔
|
||
LOG_CONFIG_SECRET_PATTERNS = 'password,token,secret,key,private,credential,access,jwt,captcha,sms'
|
||
# Redis Stream Key
|
||
LOG_STREAM_KEY = 'log:stream'
|
||
# Redis Stream 消费组名称
|
||
LOG_STREAM_GROUP = 'log_aggregator'
|
||
# Redis Stream 消费者名称前缀
|
||
LOG_STREAM_CONSUMER_PREFIX = 'worker'
|
||
# 每次读取的最大消息数量
|
||
LOG_STREAM_BATCH_SIZE = 100
|
||
# 阻塞读取等待时间(毫秒)
|
||
LOG_STREAM_BLOCK_MS = 2000
|
||
# Stream 最大长度(近似裁剪)
|
||
LOG_STREAM_MAXLEN = 100000
|
||
# Pending 回收最小空闲时间(毫秒)
|
||
LOG_STREAM_CLAIM_IDLE_MS = 60000
|
||
# Pending 回收检查间隔(毫秒)
|
||
LOG_STREAM_CLAIM_INTERVAL_MS = 5000
|
||
# 每次回收的最大消息数量
|
||
LOG_STREAM_CLAIM_BATCH_SIZE = 100
|
||
# 去重 Key 过期时间(秒)
|
||
LOG_STREAM_DEDUP_TTL = 3600
|
||
# 去重 Key 前缀
|
||
LOG_STREAM_DEDUP_PREFIX = 'log:dedup'
|
||
# stdout 输出是否为 JSON
|
||
LOGURU_JSON = false
|
||
# Loguru 最低输出级别
|
||
LOGURU_LEVEL = 'INFO'
|
||
# 是否输出到 stdout
|
||
LOGURU_STDOUT = true
|
||
# 是否启用文件日志
|
||
LOG_FILE_ENABLED = true
|
||
# 文件日志根目录
|
||
LOG_FILE_BASE_DIR = 'logs'
|
||
# 文件滚动策略
|
||
LOGURU_ROTATION = '50MB'
|
||
# 文件保留策略
|
||
LOGURU_RETENTION = '30 days'
|
||
# 文件压缩格式
|
||
LOGURU_COMPRESSION = 'zip'
|
||
# 实例标识(用于区分实例)
|
||
LOG_INSTANCE_ID = 'dockerpg'
|
||
# 服务名称(用于统一标识服务)
|
||
LOG_SERVICE_NAME = 'ruoyi-fastapi-backend'
|
||
# Worker 标识(auto 自动生成)
|
||
LOG_WORKER_ID = 'auto'
|
||
|
||
# -------- 统一认证中心 OIDC 配置 --------
|
||
# 默认关闭;启用前必须配置生产密钥、Pepper 和已注册 Origin。
|
||
# 是否启用统一认证中心 OIDC 功能
|
||
OIDC_ENABLED = false
|
||
# OIDC 签发者地址(必须为公开的绝对 URL)
|
||
OIDC_ISSUER = 'https://auth.example.com'
|
||
# OIDC 对外公开基址,须与 OIDC_ISSUER 一致
|
||
OIDC_PUBLIC_BASE_URL = 'https://auth.example.com'
|
||
# 是否强制所有授权请求使用 PKCE
|
||
OIDC_REQUIRE_PKCE = true
|
||
# 允许的 PKCE 方法,多个值使用逗号分隔(当前仅支持 S256)
|
||
OIDC_PKCE_METHODS = 'S256'
|
||
# 校验令牌时间戳时允许的时钟偏差(秒)
|
||
OIDC_ALLOWED_CLOCK_SKEW_SECONDS = 60
|
||
# 授权码有效期(秒)
|
||
OIDC_AUTHORIZATION_CODE_TTL_SECONDS = 90
|
||
# 登录、同意等交互状态有效期(秒)
|
||
OIDC_INTERACTION_TTL_SECONDS = 300
|
||
# ID Token 有效期(秒)
|
||
OIDC_ID_TOKEN_TTL_SECONDS = 300
|
||
# Access Token 默认有效期(秒)
|
||
OIDC_ACCESS_TOKEN_TTL_SECONDS = 600
|
||
# Access Token 允许的最大有效期(秒)
|
||
OIDC_MAX_ACCESS_TOKEN_TTL_SECONDS = 1800
|
||
# Refresh Token 闲置有效期(秒)
|
||
OIDC_REFRESH_TOKEN_IDLE_SECONDS = 604800
|
||
# Refresh Token 绝对有效期(秒)
|
||
OIDC_REFRESH_TOKEN_ABSOLUTE_SECONDS = 2592000
|
||
# SSO 会话闲置超时时间(秒)
|
||
OIDC_SSO_IDLE_SECONDS = 1800
|
||
# SSO 会话绝对有效期(秒)
|
||
OIDC_SSO_ABSOLUTE_SECONDS = 28800
|
||
# SSO“记住我”模式的绝对有效期(秒)
|
||
OIDC_SSO_REMEMBER_ABSOLUTE_SECONDS = 604800
|
||
# OIDC 签名算法
|
||
OIDC_SIGNING_ALGORITHM = 'RS256'
|
||
# 签名密钥来源,可选 file、kms、hsm
|
||
OIDC_SIGNING_KEY_SOURCE = 'file'
|
||
# 签名私钥文件路径(file 模式使用)
|
||
OIDC_SIGNING_PRIVATE_KEY_PATH = ''
|
||
# 签名私钥加密密钥
|
||
OIDC_SIGNING_KEY_ENCRYPTION_KEY = ''
|
||
# 当前启用的签名密钥 KID,留空由数据库 active 密钥决定
|
||
OIDC_ACTIVE_KID = ''
|
||
# 密钥轮换期间旧密钥保留时间(秒)
|
||
OIDC_KEY_ROTATION_OVERLAP_SECONDS = 86400
|
||
# 不透明 Token 哈希 Pepper(至少 32 bytes,生产环境必须配置)
|
||
OIDC_TOKEN_HASH_PEPPER = ''
|
||
# 允许的 CORS Origin 列表,多个值使用逗号分隔
|
||
OIDC_CORS_ALLOWED_ORIGINS = ''
|
||
# 登录交互页面 URL
|
||
OIDC_INTERACTION_LOGIN_URL = 'https://auth.example.com/auth-center/login'
|
||
# 授权同意页面 URL
|
||
OIDC_INTERACTION_CONSENT_URL = 'https://auth.example.com/auth-center/consent'
|
||
# 交互错误页面 URL
|
||
OIDC_INTERACTION_ERROR_URL = 'https://auth.example.com/auth-center/error'
|
||
# SSO Cookie 名称(必须使用 __Host- 前缀)
|
||
OIDC_SSO_COOKIE_NAME = '__Host-ruoyi-sso'
|
||
# SSO Cookie 是否启用 Secure 属性
|
||
OIDC_SSO_COOKIE_SECURE = true
|
||
# SSO Cookie SameSite 策略(当前必须为 lax)
|
||
OIDC_SSO_COOKIE_SAMESITE = 'lax'
|
||
# SSO Cookie Domain(__Host- Cookie 必须留空)
|
||
OIDC_SSO_COOKIE_DOMAIN = ''
|
||
# 是否启用 Legacy 认证隔离
|
||
OIDC_LEGACY_AUTH_ISOLATION_ENABLED = true
|
||
# 审计日志保留天数
|
||
OIDC_AUDIT_RETENTION_DAYS = 180
|
||
# Back-channel Logout 请求超时时间(秒)
|
||
OIDC_BACKCHANNEL_LOGOUT_TIMEOUT_SECONDS = 5
|
||
|
||
# -------- 传输层加解密配置 --------
|
||
# 是否启用传输层加解密
|
||
TRANSPORT_CRYPTO_ENABLED = true
|
||
# 传输层加解密模式:off=关闭,optional=明文/密文兼容,required=命中接口强制加密
|
||
TRANSPORT_CRYPTO_MODE = 'optional'
|
||
# 传输层加解密算法标识
|
||
TRANSPORT_CRYPTO_ALGORITHM = 'RSA_OAEP_AES_256_GCM'
|
||
# 当前启用的密钥版本标识
|
||
TRANSPORT_CRYPTO_KID = 'default'
|
||
# 传输层RSA位数,需与下方密钥对匹配
|
||
TRANSPORT_CRYPTO_RSA_KEY_SIZE = 4096
|
||
# 传输层公钥,默认提供一套可用示例值;Docker 部署前请替换为正式密钥
|
||
TRANSPORT_CRYPTO_PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwA2ooWpsxLzIVMJp7Wcv\nvR0Bu8paFn8NVPpzz+wGpUlwP5DGK6pBGItsglNMZx56MSYMp3zVyqB95XUVZ6Ub\nQVyHJ6BXXIMs/BpzcHCbyXR/wWG+pKxQ8UEwaHVhK8X21xW1R0kzzwhgMw51unEs\nA81kskVlDdGeNyaOJg5QuofEErCfR1y0e+iqd1PBpIwdEY5L+BzvbVtyhsPz6dBu\n9YbEbKs7JvNle5vjc72ebbMIeGejHFQRYxihuamPCAEylj1qqpHk8U+r+3icxQsj\n8F/TySLuOy37iVWfD+5ikLyou4ZDI3hOYnIYHl194ZM5xVyOGBD/xdqZadXTLqL6\nSrldwZfZDBl3EGgRby8yJqO6SqGgyvyGWXZAaHoPMmF+quu/nUooqnp0fpl+LCqX\nhK67kbYaA9xJeHRaP04cg16imB7sBIXBqzkyZtkhC2BtlL0h5X7dRlAddrQ23z6d\nWdJA3qe3iBSSM8pmedv+Jgfau/PFam2051HqFxvJEh/jnc6rq1aIjL/d4Kk5imIa\nQ6acv+v5N6QVFptlcx6I7j8yZJ7WUHZlB1IxVqfPb69+985eknZyLul60gyu0kPG\nYUecypUu2wiNDBAErZlUxEujMWgJDFYCSonHxtwr88gDInjP0lvwd/OgqjDQ7hSo\nRYxPhTbwo68RJDpImBjn+YsCAwEAAQ==\n-----END PUBLIC KEY-----'
|
||
# 传输层私钥,必须与上方公钥成对使用;Docker 部署前请替换为正式密钥
|
||
TRANSPORT_CRYPTO_PRIVATE_KEY = '-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----'
|
||
# 历史密钥对配置,JSON数组格式,密钥轮换说明见 docs/transport_crypto_deployment.md
|
||
TRANSPORT_CRYPTO_LEGACY_KEY_PAIRS = '[]'
|
||
# 公钥缓存有效期(秒)
|
||
TRANSPORT_CRYPTO_PUBLIC_KEY_TTL_SECONDS = 3600
|
||
# 前端传输加密策略缓存有效期(秒)
|
||
TRANSPORT_CRYPTO_FRONTEND_CONFIG_TTL_SECONDS = 300
|
||
# GET/DELETE 请求参数加密后的最大 URL 长度
|
||
TRANSPORT_CRYPTO_MAX_GET_URL_LENGTH = 4096
|
||
# 请求时间窗允许偏差(秒)
|
||
TRANSPORT_CRYPTO_CLOCK_SKEW_SECONDS = 120
|
||
# 防重放随机数有效期(秒)
|
||
TRANSPORT_CRYPTO_REPLAY_TTL_SECONDS = 300
|
||
# 启用传输层加密的路径列表,多个值使用逗号分隔,留空表示默认全部启用
|
||
TRANSPORT_CRYPTO_ENABLED_PATHS = ''
|
||
# 强制要求传输层加密的路径列表,多个值使用逗号分隔
|
||
TRANSPORT_CRYPTO_REQUIRED_PATHS = ''
|
||
# 排除传输层加密的路径列表,多个值使用逗号分隔
|
||
TRANSPORT_CRYPTO_EXCLUDE_PATHS = '/openapi.json,/docs,/docs/oauth2-redirect,/redoc,/transport/crypto/frontend-config,/transport/crypto/public-key,/common/download,/common/download/resource,/common/files,/system/file/download,/.well-known/openid-configuration,/.well-known/oauth-authorization-server,/oauth2/authorize,/oauth2/token,/oauth2/userinfo,/oauth2/jwks,/oauth2/revoke,/oauth2/introspect,/oauth2/logout'
|
||
|
||
# -------- 插件依赖安装策略配置 --------
|
||
# 策略模式:可填单一模式,或按环境映射。可选 disabled、plan_only、explicit、locked、offline
|
||
PLUGIN_DEPENDENCY_POLICY_MODE = 'dev=explicit,test=plan_only,stage=locked,prod=plan_only'
|
||
# 生产环境是否允许真实安装插件声明的 Python/npm 依赖
|
||
PLUGIN_DEPENDENCY_ALLOW_PROD_INSTALL = false
|
||
# 执行真实安装时是否要求显式确认
|
||
PLUGIN_DEPENDENCY_REQUIRE_YES = true
|
||
# Docker 生产环境默认要求依赖命中允许列表
|
||
PLUGIN_DEPENDENCY_REQUIRE_ALLOWLIST = true
|
||
# Docker 生产环境默认要求锁文件
|
||
PLUGIN_DEPENDENCY_REQUIRE_LOCKFILE = true
|
||
# 默认锁文件路径,CLI --lockfile 会覆盖该值
|
||
PLUGIN_DEPENDENCY_LOCKFILE = ''
|
||
# 默认允许列表路径
|
||
PLUGIN_DEPENDENCY_ALLOWLIST = ''
|
||
# 离线制品根目录
|
||
PLUGIN_DEPENDENCY_OFFLINE_DIR = ''
|
||
# 受控 PyPI 镜像地址,留空表示不改写 pip 安装参数
|
||
PLUGIN_DEPENDENCY_PIP_INDEX_URL = ''
|
||
# 受控 npm registry 地址,留空表示不改写 npm 安装参数
|
||
PLUGIN_DEPENDENCY_NPM_REGISTRY = ''
|
||
# 单条依赖安装命令超时时间(秒)
|
||
PLUGIN_DEPENDENCY_INSTALL_TIMEOUT = 600
|