fix authentication

This commit is contained in:
dirgantarasiahaan 2023-05-25 14:54:43 +07:00
parent d50b2a8eef
commit c833f09200
8 changed files with 17 additions and 16 deletions

View File

@ -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) {

View File

@ -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()

View File

@ -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")

View File

@ -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);
} }

View File

@ -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 " +

View File

@ -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<>();

View File

@ -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()));

View File

@ -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);