Skip to content

简要描述

  • 用户登录接口

请求 URL

  • <prefix>/rest/support/client/login

请求方式

  • POST

参数

参数名必选类型说明
usernamestring用户名
passwordstring密码
authCodestring验证码,使用TOTP算法生成,格式为 6 位数字,例如:123456

接口入参 authCode 字段说明

客户端需严格按照服务端 TOTP 算法规则生成验证码,算法完全遵循 RFC6238 标准,与服务端逻辑完全对齐。

核心算法参数说明:

  • 时间步长:30秒(30000ms),每30秒自动刷新一次验证码
  • 容错窗口:前后各1个时间切片(服务端兼容 T-1 / T / T+1 三个时间窗口)
  • 加密算法:HMAC-SHA1
  • 输出格式:固定6位纯数字,数值不足6位时前置补0

验证码生成依赖服务端分配的账号唯一密钥 totpKey(Base32 格式字符串),每个账号绑定唯一密钥,密钥不变、验证码动态变化。

服务端原生校验逻辑(参考代码),客户端需对齐该规则开发:

java
GoogleAuthenticatorConfig config = new GoogleAuthenticatorConfigBuilder()
        .setTimeStepSizeInMillis(30 * 1000L) // 30秒时间切片
        .setWindowSize(1) // 兼容前后各1个窗口
        .build();
GoogleAuthenticator googleAuthenticator = new GoogleAuthenticator(config);
// 生成当前时间窗口6位TOTP验证码
int authCode = googleAuthenticator.getTotpPassword(totpKey);
// 验证码校验
boolean isCodeValid = googleAuthenticator.authorize(totpKey, authCode);

返回示例

json
{
  "success": true,
  "retCode": 10000,
  "retMessage": "",
  "result": "e9e9e288-4bf5-4144-9eab-f0d49bc33dca,1598799630059"
}

返回参数说明

参数名类型说明
resultstring登录成功后系统签发的 token

登录成功后获得的 token,逗号隔开的第二部分表示 token 失效时间戳(毫秒值,默认为 1 小时有效),接口调用方需要在 token 失效前重新调用登录接口获得新的 token。

Released under the MIT License.