fix authentication
This commit is contained in:
parent
d50b2a8eef
commit
c833f09200
@ -54,7 +54,7 @@ public class JwtRequestFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
private void isValidToken(HttpServletRequest request, String jwtToken) {
|
private void isValidToken(HttpServletRequest request, String jwtToken) {
|
||||||
String requestUrl = request.getRequestURI();
|
String requestUrl = request.getRequestURI();
|
||||||
String refreshTokenUrl = "/authentication-service/authentication/v1/refresh-token";
|
String refreshTokenUrl = "/api/authentication/refresh-token";
|
||||||
if (!refreshTokenUrl.equals(requestUrl)) {
|
if (!refreshTokenUrl.equals(requestUrl)) {
|
||||||
var isValid = isValidAuthenticateToken(jwtToken);
|
var isValid = isValidAuthenticateToken(jwtToken);
|
||||||
if (!isValid) {
|
if (!isValid) {
|
||||||
|
@ -34,6 +34,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
.csrf().disable();
|
.csrf().disable();
|
||||||
httpSecurity.authorizeRequests()
|
httpSecurity.authorizeRequests()
|
||||||
.antMatchers("/api*/**").permitAll()
|
.antMatchers("/api*/**").permitAll()
|
||||||
|
.antMatchers("/api/authentication/*").permitAll()
|
||||||
.antMatchers("/actuator/health").permitAll()
|
.antMatchers("/actuator/health").permitAll()
|
||||||
.antMatchers("/swagger*/**").permitAll()
|
.antMatchers("/swagger*/**").permitAll()
|
||||||
.antMatchers("/v2*/**").permitAll()
|
.antMatchers("/v2*/**").permitAll()
|
||||||
|
@ -31,12 +31,10 @@ public class TokenManagement extends BaseEntity {
|
|||||||
@Column(name = "user_id")
|
@Column(name = "user_id")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
@Lob
|
@Column(name = "access_token", length = 2500)
|
||||||
@Column(name = "access_token")
|
|
||||||
private String accessToken;
|
private String accessToken;
|
||||||
|
|
||||||
@Lob
|
@Column(name = "refresh_token", length = 2500)
|
||||||
@Column(name = "refresh_token")
|
|
||||||
private String refreshToken;
|
private String refreshToken;
|
||||||
|
|
||||||
@Column(name = "issued_time")
|
@Column(name = "issued_time")
|
||||||
|
@ -7,10 +7,10 @@ public interface TokenManagementView {
|
|||||||
String getId();
|
String getId();
|
||||||
void setId(String id);
|
void setId(String id);
|
||||||
|
|
||||||
String getUserId();
|
Long getUserId();
|
||||||
void setUserId(String userId);
|
void setUserId(Long userId);
|
||||||
|
|
||||||
Clob getAccessToken();
|
String getAccessToken();
|
||||||
void setAccessToken(Clob accessToken);
|
void setAccessToken(String accessToken);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,9 @@ public interface TokenManagementRepository extends JpaRepository<TokenManagement
|
|||||||
|
|
||||||
@Query(value = "SELECT access_token as accessToken FROM token_management " +
|
@Query(value = "SELECT access_token as accessToken FROM token_management " +
|
||||||
"WHERE user_id = :userId " +
|
"WHERE user_id = :userId " +
|
||||||
"AND isDelete = false " +
|
"AND is_delete = 0 " +
|
||||||
"AND expired_time >= SYSDATE", nativeQuery = true)
|
"AND expired_time >= CURRENT_TIMESTAMP", nativeQuery = true)
|
||||||
List<TokenManagementView> findAccessTokenByUserIdAndDeletedFalse(String userId);
|
List<TokenManagementView> findAccessTokenByUserIdAndDeletedFalse(Long userId);
|
||||||
|
|
||||||
@Query(value = "SELECT tm from TokenManagement tm " +
|
@Query(value = "SELECT tm from TokenManagement tm " +
|
||||||
"WHERE tm.refreshToken = :refreshToken " +
|
"WHERE tm.refreshToken = :refreshToken " +
|
||||||
|
@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -65,7 +66,7 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> {
|
|||||||
.username(userRoleView.getUsername())
|
.username(userRoleView.getUsername())
|
||||||
.nama(userRoleView.getNama())
|
.nama(userRoleView.getNama())
|
||||||
.role(userRoleView.getRole())
|
.role(userRoleView.getRole())
|
||||||
.accessMenu(null)
|
.accessMenu(new HashSet<>())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Map<String, Object> claims = new HashMap<>();
|
Map<String, Object> claims = new HashMap<>();
|
||||||
|
@ -27,7 +27,7 @@ public class PostCheckAccessTokenService implements BaseService<PostAccessTokenR
|
|||||||
public PostAccessTokenResponse execute(PostAccessTokenRequest input) {
|
public PostAccessTokenResponse execute(PostAccessTokenRequest input) {
|
||||||
|
|
||||||
var decodeToken = TokenUtils.decodeToken(input.getAccessToken());
|
var decodeToken = TokenUtils.decodeToken(input.getAccessToken());
|
||||||
String userId = decodeToken.get("user_id");
|
Long userId = Long.valueOf(decodeToken.get("user_id"));
|
||||||
|
|
||||||
List<TokenManagementView> tokenManagementViews = tokenManagementRepository.findAccessTokenByUserIdAndDeletedFalse(userId);
|
List<TokenManagementView> tokenManagementViews = tokenManagementRepository.findAccessTokenByUserIdAndDeletedFalse(userId);
|
||||||
if (tokenManagementViews.isEmpty()) {
|
if (tokenManagementViews.isEmpty()) {
|
||||||
@ -38,7 +38,7 @@ public class PostCheckAccessTokenService implements BaseService<PostAccessTokenR
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<String> userTokenList = tokenManagementViews.stream()
|
List<String> userTokenList = tokenManagementViews.stream()
|
||||||
.map(c-> CommonUtil.clobToString(c.getAccessToken()))
|
.map(TokenManagementView::getAccessToken)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
boolean isMatch = userTokenList.stream().anyMatch(s -> s.equals(input.getAccessToken()));
|
boolean isMatch = userTokenList.stream().anyMatch(s -> s.equals(input.getAccessToken()));
|
||||||
|
@ -17,6 +17,7 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -72,7 +73,7 @@ public class TokenManagementService implements BaseService<RefreshTokenRequest,
|
|||||||
.username(userRoleView.getUsername())
|
.username(userRoleView.getUsername())
|
||||||
.nama(userRoleView.getNama())
|
.nama(userRoleView.getNama())
|
||||||
.role(userRoleView.getRole())
|
.role(userRoleView.getRole())
|
||||||
.accessMenu(null)
|
.accessMenu(new HashSet<>())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
final String accessToken = jwtTokenUtil.generateToken(String.valueOf(userRoleView.getId()), tokenContent, accessTokenExp * 60000);
|
final String accessToken = jwtTokenUtil.generateToken(String.valueOf(userRoleView.getId()), tokenContent, accessTokenExp * 60000);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user