springboot
[SpringBoot] 8. 하이버네이트 원격서버 암호화 연결 (SSH tunneling 설정)
[배경] 개발 서버를 따로 운영하고 있다. 따로 로컬에서 db 작업하고 다시 개발서버로 적용하는 일이 번거로워서 애초에 개발서버에서 db 작업 후 바로 적용한다. 기존에는 개발용 데이터베이스를 학교에 두고 사용했다. 근데 종종 전원이 꺼지거나, 랜선이 뽑히는 등의 일이 발생해서 직접 학교에 가서 일일이 작업해야하는 소요가 있었다. 그래서 개발용 db 도 aws로 옮겨버렸다. 하지만 암호화를 사용하지 않고 db 연결해서 사용하면, (예로 3306포트로 다이렉트 연결할 경우) 패킷에 평문이 그대로 노출되기 때문에 종단간 암호화를 해주어야한다. 따라서 ssh tunneling 을 이용해서 공개키 암호화 방식의 프로토콜을 이용하되, aws 상에서 forwarding 을 해주어 db로 연결하도록 했다. [연결 개..
[SpringBoot] 7. SpringSecurity 인증 모듈 개발 (OAuth2, jwt, 소셜로그인)
SpringSecurity, OAuth2.0, JWT, Session 등, 까다로운 개념이 많아서 개인적으로는 공부하는데 시간이 꽤 걸렸습니다. 프로젝트를 진행할 때마다 인증 서비스 코드를 작성하는 시간을 줄이면 좋겠다는 생각에 다른 프로젝트를 진행하더라도 언제든지 가져다 쓸 수 있는 인증 모듈을 제작해보고자 했습니다. 확장가능하고 유지보수 가능한 구조에 대해 고민 독립적인 모듈로서의 기능 회원서비스를 의존하지 않도록 하려는 고민 내가 다른 프로젝트를 진행하더라고 바로 가져다 사용할 수 있게끔 하려는 고민 위의 고민들을 통해 완성되었으며 현재는 IBAS 동아리 홈페이지에 적용되어 있습니다. 1. 인증모듈 코드 https://github.com/InhaBas/Inhabas.com-api/tree/dev G..
[SpringBoot] 6. ManyToMany 를 "일대다/다대일"로 풀어서 사용하기 (+ 영속성 전이 문제)
1. 배경 인가 시스템을 고민하면서, 수직적인 권한과 수평적인 권한을 분리했다. 수직적 권한 : (비회원->미승인회원->일반회원->회장단->회장->관리자) 수평적 권한 : 부서 (IT 부, 운영부, 총무, 홍보부 등) 수평적 권한을 처리하기 위해 Team 이라는 도메인을 추가하기로 했다. 지금 동아리 운영 상황을 보자면, 두 부서에서 동시에 활동하는 사람은 없지만 한 부서에서 다른 부서로 이동하는 경우, 중간에 임시로 동시 활동하는 경우 등이 있었고, 꼭 한 부서만 속해있으리라는 법은 없으니까. Member 와 Team 을 다대다 관계로 설정했다. 2. 다대다의 문제 jpa 에서 ManyToMany 관계를 지원하고 있어서, 해당 어노테이션을 사용해 풀어내면 정말 쉽다. 하지만 두 엔티티 사이의 관계가 그..