Appearance
简要描述
- 用户登录接口
请求 URL
<prefix>/rest/support/client/login
请求方式
- POST
参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名 |
| password | 是 | string | 密码 |
| authCode | 是 | string | 验证码,使用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"
}返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| result | string | 登录成功后系统签发的 token |
登录成功后获得的 token,逗号隔开的第二部分表示 token 失效时间戳(毫秒值,默认为 1 小时有效),接口调用方需要在 token 失效前重新调用登录接口获得新的 token。