전체 글

전체 글

    JPA - 복합키

    JPA - 복합키

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

    [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 2

    목차 [이론] 스프링 시큐리티 1 [OAuth] 스프링 시큐리티 OAuth [실습] 스프링 시큐리티 OAuth2 Login 1 [실습] 스프링 시큐리티 OAuth2 Login 2 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 2 앞서 스프링 시큐리티가 어떻게 yml파일만을 가지고 설정을 하는지에 대해 알아보았다 이번에는 로그인 요청이 들어왔을때 어떻게 처리하는지 알아보자 OAuth 로그인 요청 처리 역시 Spring Security 답게 Filter를 사용해서 로그인 처리를 하게 된다 앞서 form Login에서 UsernamePasswordAuthenticationFilter에 대해서 충분히 이해했다면 이 또한 쉽게 이해할 것이다 혹시라도..

    [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1

    [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1

    목차 [이론] 스프링 시큐리티 1 [OAuth] 스프링 시큐리티 OAuth [실습] 스프링 시큐리티 OAuth2 Login 1 [실습] 스프링 시큐리티 OAuth2 Login 2 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 2 이전에 스프링 시큐리티를 이용하여 OAuth로그인을 해보았다 정보를 매핑, 유저 저장하는 것 외에 단순히 yml파일에 정보만을 작성했을 뿐인데 로그인이 진행된 것을 볼 수 있다 크게 2가지 작업으로 나누어 어떻게 이루어 진것인지를 알아볼 예정이다 Setting Login 요청 처리 양이 좀 많으므로 우선 Setting부분을 알아보자 Setting 프로퍼티객체 생성 스프링은 기본적으로 수 많은 자동 설정들을 제공한다 ..

    [실습] 스프링 시큐리티 OAuth2 Login 2

    목차 [이론] 스프링 시큐리티 1 [OAuth] 스프링 시큐리티 OAuth [실습] 스프링 시큐리티 OAuth2 Login 1 [실습] 스프링 시큐리티 OAuth2 Login 2 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 2 앞서 OAuth2 로그인에 대해서 알아보았다 이번에는 Front와 통신을 위한 OAuth2 로그인 후 JWT 발행하는 법을 알아볼 것이다 Security Config 앞서 일반 로그인에서 filter에 successHandler를 설정해준 것처럼 이번에도 successHandler를 통해서 JWT발행을 할 것이다 기억이 나지 않는다면 스프링 시큐리티 JWT 처리를 보고오자 이번에는 직접 filter를 만드는게 아니라..

    [실습] 스프링 시큐리티 OAuth2 Login 1

    [실습] 스프링 시큐리티 OAuth2 Login 1

    목차 [이론] 스프링 시큐리티 1 [OAuth] 스프링 시큐리티 OAuth [실습] 스프링 시큐리티 OAuth2 Login 1 [실습] 스프링 시큐리티 OAuth2 Login 2 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 2 사전작업 Dependency 추가 dependencies { // 의존성 추가 implementation 'org.springframework.security:spring-security-oauth2-client' } OAuth 서비스 등록 google, naver, kakao, facebook 등 여러개가 있지만 naver를 기준으로 설명을 할 예정이다 네이버 서비스 등록 위 링크에서 사용할 애플리케이션 등록을 해..

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

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

    목차 [이론] 스프링 시큐리티 1 [OAuth] 스프링 시큐리티 OAuth [실습] 스프링 시큐리티 OAuth2 Login 1 [실습] 스프링 시큐리티 OAuth2 Login 2 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 1 [추가] 스프링 시큐리티 OAuth 로그인 처리 방법 2 OAuth(Open Authorization)란 타사 웹사이트나 웹이 리소스에 접근 할 수 있게 허용해 주는 것이 주 목적이다 OAuth는 인증(Authentication)과 인가(Authorization)중 인가에 조금더 초점을 맞추고 있다 카카오 로그인에 대해서 생각해보자 우리는 흔히 카카오의 정보를 이용해서 편히 로그인을 해오고 있다 이부분에서 사용자의 정보 즉 해당 사용자가 카카오에 가입이 되어있는지는 카카오..

    [실습] 스프링 시큐리티 JWT 처리

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 이제 그럼 로그인 후 JWT 생성 처리와 Token을 가지고 접근 시 처리를 알아보자 Config SecurityConfig @Bean public SecurityFilterChain securityFilte..

    Spring-Response 공통 포맷

    Response Value 리팩토링 전 @PostMapping("/member") public String addMember(@Validated @RequestBody SaveMemberRequest request) { memberService.saveMember(request); return "ok"; } @GetMapping("/members") public MemberInfoResponse getMemberList(){ return memberService.getMembers(); } Refactoring 후 코드 @PostMapping("/member") public ResponseData addMember(@Validated @RequestBody SaveMemberRequest request)..

    [실습] 스프링 시큐리티 JWT 설정

    목차 [이론] 스프링 시큐리티 1 [이론] 스프링 시큐리티2 [실습] 스프링 시큐리티 Form Login [추가] CustomAuthenticationProvider vs DaoAuthenticationProvider [이론] 스프링 시큐리티3 [이론] 스프링 시큐리티4 [추가] AuthorizeReqeusts vs AuthorizeHttpRequests [실습] 스프링 시큐리티 Json data Login 처리 [실습] 스프링 시큐리티 JWT 설정 [실습] 스프링 시큐리티 JWT 처리 OAuth2 JWT에 대해서 우선 JWT 사용 전에 왜 사용하는지에 대해 궁금하면 아래 사이트를 참고하면 좋을 듯 하다 JWT.io [JWT.IO JSON Web Tokens are an open, industry sta..

    JPA Proxy 객체 사용 기

    JPA Proxy 객체 사용 기

    서론 개인 프로젝트를 진행하면서 복합키를 사용할 일이 생겨 진행을 하는 도중 발생된 문제점과 해결 과정을 정리한 내용입니다 테이블의 구성은 user와 group이 다대다로 사이에 중간 매핑 테이블을 두어 각 PK를 사용하여 복합키를 설정하였다 문제점 @Entity @Getter @NoArgsConstructor @AllArgsConstructor public class UserGroup implements Persistable { @EmbeddedId private UserGroupId id; @Enumerated(EnumType.STRING) private GroupRole groupRole; @MapsId("userId") @ManyToOne(fetch = LAZY) @JoinColumn(name =..