[Spring Security] Password Encoder 알아보기
·
Spring Security
1. Password Encoder의 역할?비밀번호를 저장할 때, 일반 플레인 텍스트를 데이터베이스에 저장하면 안 됩니다. DBA나 해커가 고객 데이터베이스에 접근한다면, 비밀번호를 볼 수 있기 때문입니다. 따라서 비밀번호는 암호화 과정을 거쳐 데이터베이스에 저장하는 것이 바람직합니다. 여기 몇 가지 암호화 과정이 있습니다. 인코딩 방법인코딩 방법은 데이터를 한 형식에서 다른 형식으로 변환하는 프로세스이며 암호화와는 관련이 없습니다. 이 방법은 이미 너무 알려져 있으며, 복호화도 쉽습니다. 따라서 인코딩은 보안이 필요한 데이터에 사용되지 않습니다. 인코딩 방식은 ASCII, BASE64, UNICODE 방식이 있습니다. Encryption 방법Encryption 방법은 테이터를 변환하는 프로세스로 기밀을..
[Spring Security] UserDetailsService와 UserDetails 및 Authentication의 차이점
·
Spring Security
1. UserDetailsManager 이해하기스프링 시큐리티 필터를 거친 다음, AuthenticationManager는 적절한 Provider를 선택한 후 UserDetailsManager를 호출합니다.상속도전반적인 상속도입니다. 최하단의 3개의 클래스는 Spring Security에서 기본적으로 제공하는 매니저이며, 개발자가 정의한 매니저를 사용할 수 있습니다.1. UserDetailsServiceUserDetailService에서는 클라이언트에게 받은 username을 검색합니다. 해당 인터페이스에는 loadUserByUsername() 메소드만 정의되어 있습니다.public interface UserDetailsService { UserDetails loadUserByUsername(String..
[Spring Security] 스프링 시큐리티란?
·
Spring Security
1. 스프링 시큐리티가 필요한 이유은행을 생각합시다. 은행에는 수많은 보안이 있습니다. 보안 요원부터 24시간 돌아가는 CCTV와 금고까지... 은행을 이토록 보호하는 이유는 무엇일까요? 바로 은행에는 귀중한 가치인 금과 돈이란 자산이 있기 때문입니다.이처럼 우리의 프로젝트에는 고객들의 귀중한 가치인 데이터가 있습니다. 그리고 이를 지키기 위해 우리는 무언가 조치를 취해야 합니다. 그래서 등장한 것이 스프링 시큐리티 프레임워크입니다.2. 스프링 시큐리티 흐름서블릿과 필터자바 웹 어플리케이션 안의 필터는 서블릿 컨테이너의 요청과 응답을 가로챌 수 있습니다. 이로 인해 어플리케이션의 핵심 비즈니스 로직이 실행되기 전에 특정 작업을 수행할 수 있습니다. 스프링 시큐리티는 이런 필터를 사용해서 웹 어플리케이션 ..
[디자인패턴] 템플릿 메소드 패턴
·
데일리 공부
템플릿 메소드 패턴은 부모 클래스에서 알고리즘을 정의하나, 해당 알고리즘을 변경하지 않고 하위 클래스에서 특정 알고리즘을 재정의하는 패턴입니다. 예제 @Slf4j public abstract class Animal { public void questionAboutHowToTalk(){ log.info("이 동물은 누구일까요?"); log.info("힌트: 소리를 잘 들어보세요."); sound(); log.info("누구일까요?"); } protected abstract void sound(); } 부모 클래스 Animal에 알고리즘을 정의했습니다. sound() 메소드는 Animal을 상속 받은 자식 클래스에서 오버라이딩 할 것입니다. @Slf4j public class Dog extends Anima..
데이터베이스 트랜잭션(transaction)의 중요성
·
Database
개요우리는 데이터베이스 세상에 살고 있습니다. 친구에게 카카오톡을 보낼 때, 저녁을 먹기 위해 배달앱을 가게를 둘러볼 때, 어버이날 때 부모님 용돈 드리기 위해 돈을 입금할 때 등. 가벼운 일부터 돈과 관련된 중요한 일까지 이 모든 일련의 과정에는 데이터베이스가 존재합니다.그럼 우리는 왜 데이터베이스를 사용할까요? 많은 이유들이 있겠지만, 그중 하나로 데이터베이스에는 트랜잭션이란 기능을 제공하기 때문입니다.1. 트랜잭션이란?트랜잭션의 사전적 정의입니다. 네이버 사전에는 이렇게 정의하고 있네요.트랜잭션은 거래, 처리 과정이란 뜻을 담고 있습니다. 이는 데이터베이스의 트랜잭션 기능에도 이어집니다. 데이터베이스의 트랜잭션은 하나의 처리 과정을 안전하게 보장하는 기능입니다. 예를 들어봅시다.a는 부모님에게 10..
코드 가독성을 높이는 방법 : 좋은 변수 이름 짓기
·
데일리 공부
1. 변수 이름 짓기는 아주 큰 고민 저에게 누군가 '혼자 프로젝트를 하면서 가장 어려웠던 부분은 무엇인가?' 물으면, 저는 당연한 듯이 이렇게 말할 겁니다. 가장 힘들었던 부분은 예외 디버깅 과정과, 변수 이름 짓는 과정이었다고 말이죠. 메소드가 어떤 일을 하는지 명확하게 들어나면서, 간결하고 명확한 이름 짓기란 너무나도 힘든 일입니다. 그래서 오늘 포스팅에서는 저의 이런 고민을 해결해준 개발자의 글쓰기 책을 간단 요약했습니다. 1. 변수명은 창조가 아닌 조합이다. 우리는 짬뽕과 짜장면이 반반으로 제공되는 메뉴를 짬짜면이라고 합니다. 짬짜면이란 이름을 볼 때 이를 만들기 위해 새롭게 단어를 창조하지 않았습니다. 그저 짬뽕과 짜장면의 앞글자를 따서 이를 조합해 짬짜면이란 이름을 만든 것입니다. 변수의 이..
스프링 ModelAttribute 데이터 바인딩 과정 이해하기
·
Spring
[1] 스프링의 마법(?) ModelAttribute를 알아보자 처음 스프링을 공부할 때 가히 '마법'이라 칭할 법한 경험들이 많이 있었습니다. 오늘은 그 경험 중에 하나 였던 @ModelAttribute에 대해 알아보겠습니다. 프론트단에 해당하는 HTML 코드가 있다고 가정합시다. 회원가입 클라이언트가 회원가입 버튼을 누르면, input 태그의 memberName과 email의 값이 서버 경로(action의 /user 경로)로 HTML 요청을 보냅니다. 이때 get 방식으로 보내면 주로 쿼리 파라미터를 통해 input 태그의 value를 보내고 , post방식으로 보내면 message body를 통해 name의 value를 전달합니다. (get 방식도 message body를 통해 전달할 수 있으나 지..
자바에서 setter를 지양해야 하는 이유
·
Java
1. setter-pattern을 지양해야 하는 이유setter 패턴은 프로그래밍 언어에서 가장 유명한 패턴입니다. 심지어 많은 개발툴에서는 getter와 setter를 손쉽게 만들 수 있는 스니펫을 제공합니다. 컴퓨터 학원을 다녔던 저도, 처음 배웠던 패턴이 getter와 setter란 것을 생각하면 말 다했죠😂 그러나 setter의 사용에 대해서는 자바 개발자 뿐만 아니라, 다른 언어의 개발자 분들도 이렇게 말씀하십니다.setter, 사용하지마!궁금했습니다. 왜 setter는 사용하면 안 되는 것일까요? 1. 캡슐화 원칙 위반setter를 사용하면 객체 내부의 상태에 직접 접근이 가능합니다. 이는 캡슐화 원칙(https://ko.wikipedia.org/wiki/%EC%BA%A1%EC%8A%90%E..
코더 제이콥
'분류 전체보기' 카테고리의 글 목록 (3 Page)