问题描述
通过*潮云加app登录多次提示用户名密码失败,通过atrust客户端、平台测试登录正常
有效排查步骤
1.确认用户名密码正确 2.开启认证调试模式,使用*加登录测试复现问题 - atrust_tool log set sdp-passport DEBUG
复制代码
3.获取服务端认证调试日志 - cp /hislog/log/sdp-passport/sdp-passport-web.log /shared/取这个
复制代码 4.查看认证错误日志(Authorization与用户名已做脱敏处理)- {
- "requestOption": {
- "protocol": "https:",
- "hostname": "id.i******e.com",
- "port": 443,
- "method": "POST",
- "path": "/oauth2.0/token",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "*********4",
- "Content-Length": 141
- },
- "rejectUnauthorized": false,
- "timeout": 15000,
- "postBody": "grant_type=password&username=1559****74&password=E0:eSBR/hLHCMhUpicrQBJpsuNRJiG+naDninWUC13RFeE9Qj3m1xO+5lCQ/MsIU5DcF9WJaBgqbYV6XwXHfe6s8A=="
- },
复制代码 5.通过日志查看密码为base64加密密码。6.进一步确认,*加认证仅支持明文密码或URL编码后的密码
根因
APP提交至SDK的密码未进行URL编码导致认证提示密码错误
解决方案
通过自定义请求变量将密码进行URL编码后再提交至认证服务器即可。 - function preRequest(user,config, env) {
- //对密码进行URL编码
- const str = user.userPassword;
- const encodeStr = encodeURIComponent(str);
- env.encodeStr = encodeStr;
- }
- preRequest(user,config,env);
复制代码
|