spring

    스프링 부트 한무 403 Error

    스프링 부트 한무 403 Error

    배경 백엔드 프론트엔드 각자 열심히 개발을 진행하면서 드디어 프론트쪽 UI작업이 어느정도 끝나고 API 연동 시점에서 계속해서 403 에러가 터지기 시작했다.. 분명 로컬에서 잘 작동을 했고 이미 모든 권한에 관련된 것들은 처리를 해둔 상태인데 도데체 왜??? 문제 에러가 발생한 이유는 되게 간단했다 develop 환경에서 JPA.ddl-auto 설정 값을 none으로 설정을 해뒀더니 개발을 진행하면서 변경된 엔티티 반영이 되지 않아서 SQLSyntaxErrorException 이 발생하게 되었다 그럼 여기서 이해가 되지 않는 점은 예외가 발생하면 아래와 같이 500에러가 터지기를 기대했는데 왠걸? 403????!? 무한 403에러가 나는 것은 바로 시큐리티에서 찾을 수 있었다 AuthorizationF..

    Redis 사용기

    Redis 사용기

    배경 회원가입 시 카카오 인증만 진행하고 필수 정보를 작성하지 않은 사용자는 사용자가 맞을까?? 일단 내 기준에서는 아니다 필수로 받아야 한다고 정책으로 정해진 것이고 해당 값들이 있어야 저장을 시켜준다라고 정해진 이상 해당 값들이 없다면 그건 사용자가 아닌 것이고 저장을 해주면 안된다 라는 정책과 그럼 카카오로 부터 받은 값들을 필수 값이 들어오기 전까지 어디에 안전히 가지고 있을 지 문제에서 시작되었다 대안 1. 서버 내부 메모리에 저장 가장 간단한 방법이다 추가로 외부 리소스를 사용할 필요도 없고 내부에서 Map 형태로 우리가 만든 key 값, 사용자 정보 value로 저장을 한 후 해당 key 값을 제공하여 필수 정보 값과 같이 요청에 담아 보내도록 하면 된다 하지만 단점으로는 서버가 증가한다면?..

    첫 팀 프로젝트 후기

    3월 9일부터 시작한 팀프로젝트가 드디어 마무리가 되었다 원래는 6주정도로 생각중이었지만 프론트 한 분 잠수, 기타 이유로 1주일 정도 밀리기는 했지만 그래도 첫 팀프로젝트가 완성이 되어서 만족이지만 몇가지 아쉬운 부분들이 남아있다 팀 프로젝트 후기 "개인이 아닌 함께 하는 것의 즐거움" 항상 개발 공부는 혼자 진행해왔고 누군가의 피드백 또한 받아본 적이 없다 몇번 친구들과 스터디를 진행을 해봤지만 항상 알려주는 역할을 해왔기에 소통이 오간다기 보단 일방적인 정보 전달에만 국한되어왔다 하지만 이번 팀 프로젝트를 하면서 기술적인 문제들, 서로 고민하던 내용들, 부족한 부분을 채워나가면서 즐거움이 생기게 되었다 협업과 소통의 즐거움을 배울 수 있던 시간이었다 "부딪칠 수 있는 자신감" 부끄러운 얘기지만 나는..

    JPA - 복합키

    JPA - 복합키

    이번 포스트에서는 복합키에 대해서 정리해볼려고 한다 이전에도 몇번 사용은 해봤지만 헛갈리는 부분도 있고 자주 사용하지 않았다보니 까먹는 부분이 있어 정리해 보고자 한다 Composite Key (복합키) 우선 복합키에 대해서 알아보자 다들 알다시피 DB (여기서 DB는 Oracle, MySQL과 같은 관계형 데이터베이스를 지칭한다) 에서는 주어진 개체 집합 내에서 개체들을 구별할 수 있는 방법이 있어야 한다 다르게 표현하면 한 개체 집합에서 모든 속성들의 값이 정확하게 같은 개체들이 존재하면 안된다는 말이다 이러한 것을 위해서 키의 개념이 필요하고 그 키 중에서는 Super key, Candidate Key, Primary key가 적용 가능하다 이 중에서 우리는 Primary key를 선정해서 개체를 ..

    [실습] 스프링시큐리티 Json data Login 처리

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 기존에 formLogin을 사용해서 진행했던 이전 프로젝트에서 크게 달라진 점은 없다 달라진 점이라곤 filter를 새로 정의하였고, filter를 설정하는 부분이 추가가 되었다는 점이다 로그인 처리 방식 기..

    [이론] 스프링 시큐리티4

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 서론 앞서 UsernamePasswordAuthenticationFilter, AuthorizationFilter와 같이 filter에 대해서 언급을 했었다 이번에는 간단히 Security Filter에 대해..

    [이론] 스프링 시큐리티3

    [이론] 스프링 시큐리티3

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 서론 지금까지 인증(Authentication)에 대해 다뤄봤다면 이제는 권한 부여 즉 인가(Authorization)에 대해서 다뤄볼 차례이다 앞서서도 설명을 했지만 다시 한번 두개에 대해 말해보자면 다음과..

    [추가]CustomAuthenticationProvider vs DaoAuthenticationProvider

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 우리가 직접 만든 CustomAuthenticationProvider와 Spring Security 에서 제공되는 DaoAuthenticationProvider를 비교해보자 CustomAuthenticatio..

    [실습] 스프링시큐리티 로그인처리

    [실습] 스프링시큐리티 로그인처리

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2tory.com/entry/%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-JWT-%EC%84%A4%EC%A..

    [이론] 스프링 시큐리티2

    [이론] 스프링 시큐리티2

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 스프링 시큐리티 기본 동작 흐름도 이번에는 AuthenticationProvider, AuthenticationManger SecurityContext에 대해서 알아본다 AuthenticationProvide..