Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package clap.server.config.security;
package clap.server.adapter.inbound.security;

import clap.server.adapter.inbound.security.LoginAttemptFilter;
import clap.server.adapter.inbound.security.filter.JwtAuthenticationFilter;
import clap.server.adapter.inbound.security.filter.JwtExceptionFilter;
import clap.server.adapter.inbound.security.filter.LoginAttemptFilter;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.autoconfigure.security.ConditionalOnDefaultWebSecurity;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
Expand All @@ -24,7 +24,7 @@
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.cors.CorsConfigurationSource;

import static clap.server.config.security.WebSecurityUrl.*;
import static clap.server.adapter.inbound.security.WebSecurityUrl.*;


@Configuration
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package clap.server.adapter.inbound.security;

public class WebSecurityUrl {
private WebSecurityUrl() {
throw new IllegalStateException("Utility class");
}

public static final String [] HEALTH_CHECK_ENDPOINT = {"/health"};
public static final String[] READ_ONLY_PUBLIC_ENDPOINTS = {"/favicon.ico"};
public static final String LOGIN_ENDPOINT = "/api/auths/login";
public static final String[] SWAGGER_ENDPOINTS = {
"/swagger/api-docs/**", "/swagger/v3/api-docs/**",
"/swagger-ui/**", "/swagger"
};
public static final String REISSUANCE_ENDPOINTS = "/api/auths/reissuance";
public static final String[] PUBLIC_ENDPOINTS = {LOGIN_ENDPOINT, REISSUANCE_ENDPOINTS};
public static final String TEMPORARY_TOKEN_ALLOWED_ENDPOINT = "/api/members/initial-password";
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import clap.server.adapter.outbound.jwt.access.AccessTokenClaimKeys;
import clap.server.application.port.outbound.auth.ForbiddenTokenPort;
import clap.server.application.port.outbound.auth.JwtProvider;
import clap.server.exception.AuthException;
import clap.server.exception.JwtException;
import clap.server.exception.code.AuthErrorCode;
import io.jsonwebtoken.Claims;
Expand All @@ -27,12 +28,14 @@
import org.springframework.web.filter.OncePerRequestFilter;

import java.io.IOException;
import java.util.Arrays;

import static clap.server.adapter.inbound.security.WebSecurityUrl.*;

@Slf4j
@Component
@RequiredArgsConstructor
public class JwtAuthenticationFilter extends OncePerRequestFilter {
private static final String TEMPORARY_TOKEN_ALLOWED_ENDPOINT = "/api/members/initial-password";
private final UserDetailsService securityUserDetailsService;
private final JwtProvider accessTokenProvider;
private final JwtProvider temporaryTokenProvider;
Expand All @@ -46,10 +49,13 @@ protected void doFilterInternal(
@NotNull FilterChain filterChain
) throws ServletException, IOException {
try {
if (isAnonymousRequest(request)) {
if (Arrays.asList(PUBLIC_ENDPOINTS).contains(request.getRequestURI())) {
filterChain.doFilter(request, response);
return;
}
if (isAnonymousRequest(request)) {
throw new AuthException(AuthErrorCode.UNAUTHORIZED);
}

String accessToken = resolveAccessToken(request);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public static BaseErrorCode determineErrorCode(Exception exception, BaseErrorCod
public static JwtException determineAuthErrorException(Exception exception) {
return findAuthErrorException(exception).orElseGet(
() -> {
BaseErrorCode errorCode = determineErrorCode(exception, GlobalErrorCode.INTERNAL_SERVER_ERROR);
BaseErrorCode errorCode = determineErrorCode(exception, AuthErrorCode.UNAUTHORIZED);
log.debug(exception.getMessage(), exception);
return new JwtException(errorCode);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ protected void doFilterInternal(

private void sendAuthError(HttpServletResponse response, JwtException e) throws IOException {
if (!response.isCommitted()) {
response.setContentType("application/json;charset=UTF-8");
response.setStatus(e.getErrorCode().getHttpStatus().value());
response.getWriter().write(e.getErrorCode().getCustomCode());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package clap.server.adapter.inbound.security;
package clap.server.adapter.inbound.security.filter;

import clap.server.application.service.auth.LoginAttemptService;
import clap.server.exception.AuthException;
Expand All @@ -17,20 +17,19 @@
import java.io.IOException;
import java.util.ArrayList;

import static clap.server.adapter.inbound.security.WebSecurityUrl.LOGIN_ENDPOINT;
import static clap.server.common.constants.AuthConstants.SESSION_ID;


@RequiredArgsConstructor
@Slf4j
public class LoginAttemptFilter extends OncePerRequestFilter {

private static final String LOGIN_ENDPOINT = "/api/auths/login";
private final LoginAttemptService loginAttemptService;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {

String sessionId = request.getHeader(SESSION_ID.getValue().toLowerCase());

if (request.getRequestURI().equals(LOGIN_ENDPOINT)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package clap.server.adapter.inbound.security;
package clap.server.adapter.inbound.security.service;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package clap.server.adapter.inbound.security;
package clap.server.adapter.inbound.security.service;

import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package clap.server.adapter.inbound.security;
package clap.server.adapter.inbound.security.service;

import clap.server.adapter.outbound.persistense.repository.member.MemberRepository;
import clap.server.exception.AuthException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.admin.AddMainCategoryRequest;
import clap.server.adapter.inbound.web.dto.admin.AddSubCategoryRequest;
import clap.server.application.port.inbound.admin.AddMainCategoryUsecase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.application.port.inbound.admin.DeleteCategoryUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.admin.UpdateMemberRequest;
import clap.server.application.port.inbound.admin.UpdateMemberUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.label.request.CreateLabelRequest;
import clap.server.adapter.inbound.web.dto.label.request.EditLabelRequest;
import clap.server.application.port.inbound.label.AddLabelUsecase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.admin.RegisterMemberRequest;
import clap.server.application.port.inbound.admin.RegisterMemberUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.application.port.inbound.admin.RegisterMemberUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.admin;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.admin.UpdateCategoryRequest;
import clap.server.application.port.inbound.admin.UpdateCategoryUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.auth;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.auth.LoginRequest;
import clap.server.adapter.inbound.web.dto.auth.LoginResponse;
import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.history;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.history.EditCommentRequest;
import clap.server.application.port.inbound.history.DeleteCommentUsecase;
import clap.server.application.port.inbound.history.EditCommentUsecase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.history;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.history.response.FindTaskHistoryResponse;
import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus;
import clap.server.application.port.inbound.history.FindTaskHistoriesUsecase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.history;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.history.CreateCommentRequest;
import clap.server.application.port.inbound.history.SaveCommentAttachmentUsecase;
import clap.server.application.port.inbound.history.SaveCommentUsecase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.label;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.label.response.FindLabelListResponse;
import clap.server.application.port.inbound.label.FindLabelListUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.log;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.common.PageResponse;
import clap.server.adapter.inbound.web.dto.log.response.AnonymousLogResponse;
import clap.server.adapter.inbound.web.dto.log.request.FilterLogRequest;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.member;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.member.response.MemberDetailInfoResponse;
import clap.server.adapter.inbound.web.dto.member.response.MemberProfileResponse;
import clap.server.adapter.inbound.web.dto.member.request.UpdateMemberInfoRequest;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.member;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.application.port.inbound.member.ResetInitialPasswordUsecase;
import clap.server.application.port.inbound.member.ResetPasswordUsecase;
import clap.server.application.port.inbound.member.VerifyPasswordUseCase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.notification;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.common.SliceResponse;
import clap.server.adapter.inbound.web.dto.notification.response.CountNotificationResponse;
import clap.server.adapter.inbound.web.dto.notification.response.FindNotificationListResponse;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.notification;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.application.port.inbound.notification.*;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package clap.server.adapter.inbound.web.notification;


import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.application.port.inbound.notification.SubscribeSseUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.task;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.task.request.ApprovalTaskRequest;
import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskLabelRequest;
import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskProcessorRequest;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.task;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.task.response.FindApprovalFormResponse;
import clap.server.application.port.inbound.task.ApprovalTaskUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.task;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.common.PageResponse;
import clap.server.adapter.inbound.web.dto.task.request.FilterTaskListRequest;
import clap.server.adapter.inbound.web.dto.task.response.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.task;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.task.request.CreateTaskRequest;
import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskRequest;
import clap.server.adapter.inbound.web.dto.task.response.CreateTaskResponse;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.task;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.adapter.inbound.web.dto.task.request.FilterTaskBoardRequest;
import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskOrderRequest;
import clap.server.adapter.inbound.web.dto.task.response.TaskBoardResponse;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.adapter.inbound.web.task;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
import clap.server.application.port.inbound.task.TerminateTaskUsecase;
import clap.server.common.annotation.architecture.WebAdapter;
import io.swagger.v3.oas.annotations.Operation;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/clap/server/config/aop/LoggingAspect.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.config.aop;

import clap.server.adapter.inbound.security.SecurityUserDetails;
import clap.server.adapter.inbound.security.service.SecurityUserDetails;

import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus;
import clap.server.application.port.inbound.log.CreateAnonymousLogsUsecase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package clap.server.config.security;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import clap.server.adapter.inbound.security.handler.JwtAccessDeniedHandler;
import clap.server.adapter.inbound.security.handler.JwtAuthenticationEntryPoint;
import clap.server.adapter.inbound.security.SecurityUserDetailsService;
import clap.server.adapter.inbound.security.service.SecurityUserDetailsService;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package clap.server.config.security;

import clap.server.adapter.inbound.security.LoginAttemptFilter;
import clap.server.adapter.inbound.security.filter.LoginAttemptFilter;
import clap.server.adapter.inbound.security.filter.JwtAuthenticationFilter;
import clap.server.adapter.inbound.security.filter.JwtExceptionFilter;
import clap.server.application.port.outbound.auth.ForbiddenTokenPort;
Expand Down
16 changes: 0 additions & 16 deletions src/main/java/clap/server/config/security/WebSecurityUrl.java

This file was deleted.

Loading