|
|
@ -36,11 +36,15 @@ import org.thingsboard.server.common.data.id.TenantId; |
|
|
import org.thingsboard.server.common.data.id.UserId; |
|
|
import org.thingsboard.server.common.data.id.UserId; |
|
|
import org.thingsboard.server.common.data.security.Authority; |
|
|
import org.thingsboard.server.common.data.security.Authority; |
|
|
import org.thingsboard.server.common.data.security.UserCredentials; |
|
|
import org.thingsboard.server.common.data.security.UserCredentials; |
|
|
|
|
|
import org.thingsboard.server.common.data.security.model.SecuritySettings; |
|
|
|
|
|
import org.thingsboard.server.common.data.security.model.UserPasswordPolicy; |
|
|
import org.thingsboard.server.dao.customer.CustomerService; |
|
|
import org.thingsboard.server.dao.customer.CustomerService; |
|
|
|
|
|
import org.thingsboard.server.dao.exception.DataValidationException; |
|
|
import org.thingsboard.server.dao.user.UserService; |
|
|
import org.thingsboard.server.dao.user.UserService; |
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
import org.thingsboard.server.service.security.auth.MfaAuthenticationToken; |
|
|
import org.thingsboard.server.service.security.auth.MfaAuthenticationToken; |
|
|
import org.thingsboard.server.service.security.auth.mfa.TwoFactorAuthService; |
|
|
import org.thingsboard.server.service.security.auth.mfa.TwoFactorAuthService; |
|
|
|
|
|
import org.thingsboard.server.service.security.exception.UserPasswordNotValidException; |
|
|
import org.thingsboard.server.service.security.model.SecurityUser; |
|
|
import org.thingsboard.server.service.security.model.SecurityUser; |
|
|
import org.thingsboard.server.service.security.model.UserPrincipal; |
|
|
import org.thingsboard.server.service.security.model.UserPrincipal; |
|
|
import org.thingsboard.server.service.security.system.SystemSecurityService; |
|
|
import org.thingsboard.server.service.security.system.SystemSecurityService; |
|
|
@ -83,6 +87,17 @@ public class RestAuthenticationProvider implements AuthenticationProvider { |
|
|
if (userPrincipal.getType() == UserPrincipal.Type.USER_NAME) { |
|
|
if (userPrincipal.getType() == UserPrincipal.Type.USER_NAME) { |
|
|
String username = userPrincipal.getValue(); |
|
|
String username = userPrincipal.getValue(); |
|
|
String password = (String) authentication.getCredentials(); |
|
|
String password = (String) authentication.getCredentials(); |
|
|
|
|
|
|
|
|
|
|
|
SecuritySettings securitySettings = systemSecurityService.getSecuritySettings(null); |
|
|
|
|
|
UserPasswordPolicy passwordPolicy = securitySettings.getPasswordPolicy(); |
|
|
|
|
|
if (Boolean.TRUE.equals(passwordPolicy.getForceUserToResetPasswordIfNotValid())) { |
|
|
|
|
|
try { |
|
|
|
|
|
systemSecurityService.validatePasswordByPolicy(password, passwordPolicy); |
|
|
|
|
|
} catch (DataValidationException e) { |
|
|
|
|
|
throw new UserPasswordNotValidException("The entered password violates our policies. If this is your real password, please reset it."); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
securityUser = authenticateByUsernameAndPassword(authentication, userPrincipal, username, password); |
|
|
securityUser = authenticateByUsernameAndPassword(authentication, userPrincipal, username, password); |
|
|
if (twoFactorAuthService.isTwoFaEnabled(securityUser.getTenantId(), securityUser.getId())) { |
|
|
if (twoFactorAuthService.isTwoFaEnabled(securityUser.getTenantId(), securityUser.getId())) { |
|
|
return new MfaAuthenticationToken(securityUser); |
|
|
return new MfaAuthenticationToken(securityUser); |
|
|
|