【7.2.5】【auth】更新登录时密码加密的校验开关

pull/40/MERGE
fengshuonan 2022-10-16 23:58:09 +08:00
parent b4249585b2
commit 644bc7a94a
4 changed files with 41 additions and 6 deletions

View File

@ -17,6 +17,14 @@
<dependencies>
<!--jwt模块的api-->
<!--AuthServiceApi解析token的结果需要用到jwt模块-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>jwt-api</artifactId>
<version>${roses.version}</version>
</dependency>
<!--解析需要转化时间-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>

View File

@ -28,6 +28,7 @@ import cn.stylefeng.roses.kernel.auth.api.exception.AuthException;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginWithTokenRequest;
import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload;
/**
* 退token
@ -98,11 +99,12 @@ public interface AuthServiceApi {
* jwt便tokentokentoken
*
* @param token token
* @return token
* @throws AuthException token
* @author fengshuonan
* @date 2020/10/19 14:16
*/
void validateToken(String token) throws AuthException;
DefaultJwtPayload validateToken(String token) throws AuthException;
/**
* token

View File

@ -235,4 +235,16 @@ public class AuthConfigExpander {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_SSO_HOST", String.class, SYS_AUTH_SSO_HOST);
}
/**
* RSA
* <p>
*
*
* @author fengshuonan
* @date 2022/10/16 23:28
*/
public static Boolean getPasswordRsaValidateFlag() {
return ConfigContext.me().getSysConfigValueWithDefault("SYS_AUTH_PASSWORD_RSA_VALIDATE", Boolean.class, false);
}
}

View File

@ -216,16 +216,26 @@ public class AuthServiceImpl implements AuthServiceApi {
}
@Override
public void validateToken(String token) throws AuthException {
public DefaultJwtPayload validateToken(String token) throws AuthException {
try {
// 1. 先校验jwt token本身是否有问题
JwtContext.me().validateTokenWithException(token);
// 2. 判断session里是否有这个token
// 2. 获取jwt的payload
DefaultJwtPayload defaultPayload = JwtContext.me().getDefaultPayload(token);
// 3. 如果是7天免登陆则不校验session过期
if (defaultPayload.getRememberMe()) {
return defaultPayload;
}
// 4. 判断session里是否有这个token
LoginUser session = sessionManagerApi.getSession(token);
if (session == null) {
throw new AuthException(AUTH_EXPIRED_ERROR);
}
return defaultPayload;
} catch (JwtException jwtException) {
// jwt token本身过期的话返回 AUTH_EXPIRED_ERROR
if (JwtExceptionEnum.JWT_EXPIRED_ERROR.getErrorCode().equals(jwtException.getErrorCode())) {
@ -316,8 +326,11 @@ public class AuthServiceImpl implements AuthServiceApi {
throw new ScannerException(ScannerExceptionEnum.SYSTEM_RESOURCE_URL_NOT_INIT);
}
// 3. 解密密码的密文
String decryptPassword = passwordTransferEncryptApi.decrypt(loginRequest.getPassword());
// 3. 解密密码的密文需要sys_config相关配置打开
if (loginRequest.getPassword() != null && AuthConfigExpander.getPasswordRsaValidateFlag()) {
String decryptPassword = passwordTransferEncryptApi.decrypt(loginRequest.getPassword());
loginRequest.setPassword(decryptPassword);
}
// 4. 如果开启了单点登录并且CaToken没有值走单点登录获取loginCode
if (ssoProperties.getOpenFlag() && StrUtil.isEmpty(caToken)) {
@ -330,7 +343,7 @@ public class AuthServiceImpl implements AuthServiceApi {
SsoServerApi ssoServerApi = SpringUtil.getBean(SsoServerApi.class);
SsoLoginCodeRequest ssoLoginCodeRequest = new SsoLoginCodeRequest();
ssoLoginCodeRequest.setAccount(loginRequest.getAccount());
ssoLoginCodeRequest.setPassword(decryptPassword);
ssoLoginCodeRequest.setPassword(loginRequest.getPassword());
String remoteLoginCode = ssoServerApi.createSsoLoginCode(ssoLoginCodeRequest);
return new LoginResponse(remoteLoginCode);
}