dnd-side-project / dnd-11th-7-backend

모두의 일정을 한눈에! 간편한 일정 조율 서비스, 째깍
5 stars 1 forks source link

JWT Filter 관련 제안 및 질문 #103

Closed f1v3-dev closed 1 day ago

f1v3-dev commented 3 days ago

🙋 질문 내용

회원 검증 필터 관련해서 조금 처리하기 까다로운 문제가 있네요

이러한 경우에 JwtAuthenticationFilter 가 동작해야 하는데

WHITE_LIST 중 /api/v1/meetings/** 가 존재합니다. 해당 URL같은 경우 비회원도 접근이 가능하도록 처리를 해야해서 지정을 해두었는데 (비회원 모임에 대한 조회) 문제가 있더라구요

따라서 아래처럼 각 API에 대해서 명확하게 구분을 해야할 것 같아요.

    public static final String[] WHITE_LIST = {
            "/api/v1/auth/oauth/**",
            "/api/v1/auth/**",
            "/api/v1/meetings/*/info",
            "/api/v1/meetings/*/times",
            "/api/v1/meetings/*/participants",
            "/api/v1/meetings/*/schedules/guests/**"
    };

    public static final String[] USER_LIST = {
            "/api/v1/categories",
            "/api/v1/member/**",
            "/api/v1/meetings",
            "/api/v1/meetings/*/schedules/members/**"
    };

또한, JwtFilter 도 WHITE_LIST면 동작하지 않게가 아닌, USER_LIST의 경우 동작하도록 코드를 조금 수정하면 더 좋을 것 같아요!

아니면 더 좋은 방법이 있는지, 태웅님의 의견이 궁금합니다.

RTUnu12 commented 3 days ago

그러면 음...필터가 화이트리스트가 아닌 유저나 어드민일때 작동하는 코드로 만들고, 비회원에 대한 처리일 경우 전부 화이트리스트에 넣으면 될거 같은데...더 좋은 생각 있으신가요?

저의 해결법은 결국 여러 경로에 따라 세세하게 전부 나열해야하는 문제가 있어서

f1v3-dev commented 3 days ago

제가 진행을 하면서 발생했던 문제가 '화이트 리스트를 먼저 검사한다' 라는 문제 때문에 필터를 거치지 않는 문제가 있더라구요.

예를 들어서, "POST /api/v1/meetings" 를 통해 모임 리더가 모임을 생성한다! -> 그냥 필터를 무시하고 생성 쿼리를 날리다가 리더에 대한 정보가 없어서 SQL측에서 에러가 발생해요!

이러한 경우에 태웅님이 말씀하신 것처럼 유저나 어드민일 때만 작동하는 코드로 수정 하는게 더 낫지 않을까 생각이 들어요

RTUnu12 commented 3 days ago

그게 좋을것 같습니다.

f1v3-dev commented 3 days ago

그게 좋을것 같습니다.

넵 지금 모임 응답에 대해서 수정하고 있는데 같이 수정을 할까요? 아니면 새로 이슈를 만들고 별도로 수정할까요?

RTUnu12 commented 3 days ago

그렇게 해주시면 정말 감사하겠습니다.

f1v3-dev commented 3 days ago

같이 작업 진행할게요 ㅋㅋㅋㅋㅋㅋ