终端登录
- 请求地址为
auth/oauth/token - header 中传终端信息:
Authorization: Basic Base64(client_id:client_secret) - 以后台登录为例:这里为
Authorization: Basic Base64(admin:admin)传入终端信息,代码如下
return request({
url: '/auth/oauth/token',
headers: {
isToken: false,
Authorization: 'Basic YWRtaW46YWRtaW4='
},
method: 'post',
params: { username, password, randomStr, code, grant_type, scope }
})
终端密钥安全
- 终端管理的列表和详情统一将
client_secret显示为******,不向浏览器返回真实密钥。 - 编辑终端时保留
******表示密钥不变;填写新的密钥才会更新数据库。 - OAuth2 认证使用受
@Inside保护的内部查询读取真实密钥,不受管理端脱敏影响。
登录密码解密失败
账号密码登录由前端使用 securityKey 加密密码,再由网关使用 Nacos joolun-gateway-{profile}.yml 中的 security.encode.key 解密。两个配置必须完全一致,并满足当前 AES 使用的 16 字节密钥要求。
配置不一致或密文格式异常时,网关返回 HTTP 400,响应提示为:
登录密码解密失败,请联系管理员检查前端 securityKey 与网关 security.encode.key 是否一致
排查顺序:
- 检查当前发布的
joolun-plus-ui/src/config/env.ts或joolun-plus-app/config/env.js中的securityKey。 - 检查当前环境 Nacos
joolun-gateway-{profile}.yml中的security.encode.key。 - 修改后重新构建对应前端并重启网关。
- 清理浏览器缓存或 CDN 缓存后重新登录。
为防止凭据泄露,网关日志只记录请求路径和配置核查方向,不记录密码明文或密文。
配置终端不校验验证码
默认所有终端都要校验验证码,可以修改网关配置来配置不校验验证码。
ignore:
clients:
- test
swagger-providers:
- ${AUTH-HOST:joolun-auth}
获取用户
SecurityUtils.getUser().getId()