본문 바로가기

분류 전체보기214

Authentication(인증) (1) - 사용자 정보 저장하기 & 비밀번호 암호화하여 저장하기(DelegatingPasswordEncoder는 무엇인가?) 인증이란 resource에 접근하려는 사람이 누구인지 판별하는 과정을 의미합니다. username과 password를 이용한 인증방식이 일반적입니다. 사용자가 username과 password를 입력하면 일련의 과정을 거쳐 사용자 정보가 저장된 DB에서 사용자를 조회함으로서 인증을 하게 됩니다. 사용자 정보 DB에 해당 정보가 있다면 인증에 성공하고 없다면 실패하게 됩니다. 인증에 성공하게 되면 인증정보를 토대로 권한부여(인가, authorization)까지도 수행할 수 있게 됩니다. 그러니 첫 단계인 인증이 잘 이루어져야 그 이후의 절차들도 견고하게 수행이 될 수 있을 것 같습니다. 그런데 이런 인증이 일어나려면 먼저 인증할 사용자 정보를 생성하고 사용자 정보 DB에 데이터를 저장해야 됩니다. 내가 자.. 2022. 7. 29.
Spring Security의 작동 방식 알아보기 Spring Security는 Spring MVC 영역 전에 작업이 수행됩니다. Spring MVC를 공부하면서 자주 보게되는 Spring MVC flow chart인데요. 위 차트에서는 Incoming request가 바로 Front Controller(=Dispatcher Servlet)으로 전달되는 것으로 표현되어 있습니다. 맞는 말이지만 사실 Front Controller에 전달되기 전에 'Filter'라는 것들을 거치게 됩니다. 보라색 상자로 표현된 Client가 웹브라우저로 HttpRequest를 보내면, Servlet Container는 'FilterChain'이라는 Filter들이 연결되어 순서대로 실행될 수 있는 체인을 생성합니다. (Filter Chain은 Servlet Containe.. 2022. 7. 28.
IntelliJ 콘솔 한글 깨짐 해결법 도움말 -> 사용자지정VM옵션편집 메뉴 클릭하여 vmoptions에 -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 이 두 설정을 추가해주니 정상적으로 한글이 콘솔에 출력되었습니다. 참고자료 https://da-nyee.github.io/posts/intellij-console-encoding-issue/ [IntelliJ] 콘솔 한글 깨짐 (Console Encoding Issue) Introduction da-nyee.github.io 2022. 7. 28.
LSCS 구하기 LSCS는 Largest Sum of Contiguous Subarray의 약자로, 연속된 부분배열의 합들 중 가장 큰 합을 의미합니다. 연속된 부분 배열이란 예를 들어서 전체 배열이 {1, 2, 3} 인 경우에 {1}, {1,2}, {1,2,3}, {2}, {2,3}, {3} 과 같이 인접한 원소들로만 이루어진 집합을 의미합니다. 이 배열의 LSCS는 부분배열 {1,2,3}의 원소의 합인 6이 됩니다. 원소들이 0이상의 정수라면 단순히 모든 원소를 다 더하면 LSCS가 되겠지만, 음수가 포함되는 경우는 조금 다른 결과가 나올 것입니다. 위의 문제를 만났을 때 배열의 index를 포인터 삼아 포인터를 옮겨가며 모든 부분배열 원소의 합을 각자 구한 뒤, 그 중에서 가장 큰 값을 구하는 방법을 사용했습니다... 2022. 7. 28.
Circular Dependencies error Circular Dependency에러는 아래와 같이 코드를 구성했을 때 만나게 되었습니다. 비밀번호를 BCryptPasswordEncoder를 사용해 암호화하려는게 목적이었습니다. 지금 다시 코드를 보니 왜 AppSecurityConfig에서는 사용하지도 않을 BCryptPasswordEncoder를 DI받으려고 했는지 모르겠지만, @Autowired BCryptPasswordEncoder bCryptPasswordEncoder; 그때는 잠시 헷갈렸던 것 같습니다. 그래도 덕분에 Circular dependency라는 것은 사용을 권하지 않는다는 것을 알게되었고, 이후에 의존성을 설정할 때 주의해야겠다는 생각도 하게되었습니다. [AppSecurityConfig] @Configuration @Enable.. 2022. 7. 25.
Spring Security Framework은 어떤 도구인지 대표적인 기능 알아보기 Spring Security framework는 authentication(인증), authorization(인가), protection from attacks(외부 공격으로 부터의 보호)를 위해 사용할 수 있는 프레임워크입니다. 프레임워크의 도움을 받지 않고 인증, 인가 등의 기능을 구현할 수도 있지만 프레임워크를 사용하면 직접 구현해야할 필요가 없어지고 또한 보안성도 보장이 된 기능들이기에 사용하는 것이 훨씬 편리하다고 합니다. 먼저 인증, 인가, 외부 공격으로 부터의 보호란 무슨 의미인지 Spring doc에 나온 내용을 간단하게 살펴보겠습니다. 1. Authentication(인증) 누가 특정 resource에 접근하려고 하는지 verify하는 방식. 일반적으로 username과password를 .. 2022. 7. 25.
반응형