核心业务路由
概述
核心业务路由负责接收各API入口(Web、App、API)的请求,并将其分发到对应的业务处理模块。它是整个交易所后端的核心组件,负责协调各个模块之间的交互。
基本上,Core只负责逻辑转发,目前接入的GRPC服务包括:
| Service | Note |
|---|---|
| bank-bridge | |
| currency | |
| ip-location | |
| ledger-manager | |
| market | |
| notify | |
| quota | |
| risk | |
| spot | |
| statistical | |
| user-attribute | |
| user | |
| wallet |
其它功能包括:
- 用户注册管理
- 多因素统一验证
配置
配置文件位于data/config/config.toml(非敏感)和data/private/private.toml(敏感)中。
程序将通过viper读取配置文件。 配置可以被环境变量覆盖,例如
aiignore
# config.toml
[grpc]
port=9081可以被环境变量覆盖:
bash
export INJ_GRPC.PORT=9003环境变量的格式为INJ_GRPC.PORT,其中INJ是固定字符串。
多因素统一验证
为了向前端提供多阶段的多因素认证,Core提供了多种验证方法。用户可以在注册、登录、重置密码等关键操作中使用这些验证方法来增强安全性。
验证方法包括:
- 发送到邮箱的验证码
- 用户Google Authenticator的TOTP验证
- 用户密码
验证方式可以为三种里的任意一种或多种组合,用户只有在所有验证方式都通过后,才能完成操作。
验证步骤:
- 前端申请一个VerificationId (接口风格统一为xxx_pre,如ga_init_pre)
func (c *VerificationService) RequestVerification
- 后端根据业务需求决定needTwoFa, needGa, needCredential
- 前端根据needTwoFa, needGa, needCredential的值,决定需要收集哪些验证信息
- 如果needTwoFa=true,则前端需要收集用户的TwoFA代码(调用
func (c *VerificationService) SendTwoFaForVerification) - 如果needGa=true,则前端需要收集用户的Google Authenticator代码
- 如果needCredential=true,则前端需要收集用户的密码
- 前端可以通过调用
func (c *VerificationService) QueryVerification来获取当前verificationId的状态和需要收集的信息
- 如果needTwoFa=true,则前端需要收集用户的TwoFA代码(调用
- 前端每收集到一个twoFa/Ga/Credential,通过调用
func (c *VerificationService) SubmitVerification进行提交。提交参数为- verificationId, code/password, cookie (已登录)
- verificationId, code/password, email (未登录)
- 后端更新这个verificationId的验证状态,返回是否已经完成各项/总体验证
func (c *VerificationService) VerifyTwoFafunc (c *VerificationService) VerifyGafunc (c *VerificationService) VerifyPassword
- 前端在done=true时可以提交正式接口
- 前端调用正式接口执行工作(xxx,如ga_init)。提交参数中带上verificationId
- 后端验证verificationId是否完成所有必须验证,然后执行工作,最后销毁verification(
func (c *VerificationService) InvalidateVerification)
