부트캠프 57

Java 코딩 테스트 특강(1)

big O 를 사용하는 이유 최악을 알 수 있어서(최악을 피하기 위해) -> 왜 최악을 중요하게 생각하는가? = 입력값을 통제할 수 없으니까 대략적인 빅오 O(1) O(logN) - 상한 기준 27 O(N) - 상한 기준 1억 O(N * logN) - 상한 기준 10만 ~ 100만 O(N^2) - 상한 기준 10000 O(N^2 * logN) O(N^3) - 상한 기준 500 1억이 상한이다 라고 기억해주세요 로그는 한 번씩 할 때마다 절반으로 나뉜다라고 생각해주세요(업앤다운) 자, 그럼 n을 어떻게 알 수 있냐? n이 미지수일때 어떡하냐? 일단 정답은 N은 미지수일수가 없어요. 1.문제해결절차 2.how to solve 정확하게는! "A finite set of intructions that solve..

부트캠프 2023.06.12

코드스테이츠 SEB BE 백엔드 부트캠프 수료 - 23.06.08

길다면 길고 짧다면 짧을 한 달 반의 프로젝트 기간을 모두 마치고 이후 이력서 및 면접 준비 등의 교육까지 마치고 바로 오늘!! 23년 6월 8일. 22년 12월 15일에 시작했던 코드스테이츠 백엔드 부트캠프를 모두 마치고 수료하는 날이 왔다. 사실 프로젝트 기간동안 블로그에 거의 신경쓰지 못했는데, 이제 여유가 생긴 만큼 다시 열심히 관리해보고자 한다. 먼저, 메인프로젝트에 대해 간단히 언급하고 넘어가자면 우리팀(Undefined)이 1등을 했다! (메인프로젝트에 대해서는 나중에 좀 더 자세히 작성하겠다.) 정말 열심히 한 만큼 좋은 결과가 나와서 너무 좋았고, 데모데이 Talk 이라는 시간에 간단한 발표까지 할 수 있었다. (프로젝트 내용, 팀원, 사용 기술스택 등을 발표하는 시간이었다.) 이제 이력..

부트캠프 2023.06.08

Spirng Security - JWT와 OAuth2 기초

0.자격 증명 방식 먼저, JWT에 대해 배우기 전에 2가지 자격 증명 방식에 대한 차이를 짚고 넘어가야 함 HTTP 프로토콜은 request를 전송한 후, response를 수신하게 되면 연결을 끊는 비 연결성(Connectionless)의 특성을 가지고 있고 또한 request와 response에 대한 상태를 저장하지 않는 비 상태성(Stateless)의 특성이 있음 위의 두 특성 때문에 로그인 인증이 성공적으로 수행되었다 하더라도 서버 측에서는 매번 request를 수신할 때마다 이 request가 인증된 사용자가 보낸 request인지 알 방법이 없으므로 사용자의 인증이 성공적으로 이루어졌을 때, 인증된 사용자 request의 상태를 유지하기 위한 수단이 필요함(대표적인 수단이 세션과 토큰) 0-..

부트캠프 2023.03.29

Spring Security - 권한 부여 컴포넌트

1.권한 부여 컴포넌트를 이용한 권한 부여 처리 -기본 part 2의 권한 부여 처리 흐름을 보다 자세히 이해하기 위해 Spring Security의 몇 가지 권한 부여 컴포넌트들의 내부 코드를 들여다볼 예정임 [1] AuthorizationFilter ● URL을 통해 사용자의 액세스를 제한하는 권한 부여 Filter ● Spring Security 5.5 버전부터 FilterSecurityInterceptor를 대체하고 있음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public class AuthorizationFilter extends OncePerRequestFilter { private final ..

부트캠프 2023.03.22

Spring Security - 인증 컴포넌트

1.인증 컴포넌트를 이용한 인증 처리 -기본 part 2의 인증 처리 흐름을 보다 자세히 이해하기 위해 Spring Security에서 지원하는 인증 컴포넌트들의 내부 코드를 들여다볼 예정임 [1] UsernamePasswordAuthenticationFilter ● 위의 그림에서 사용자의 로그인 request를 제일 먼저 만나는 컴포넌트 ● 일반적으로 로그인 폼에서 제출되는 Username과 Password를 통한 인증을 처리하는 Filter ● 클라이언트로부터 전달받은 Username과 Password를 Spring Security가 인증 프로세스에서 이용할 수 있도록 UsernamePasswordAuthenticationToekn을 생성함 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..

부트캠프 2023.03.22

Spring Security - 기본 part 2

3.Spring Security의 인증 처리 흐름 -사용자의 인증 요청이 Spring Security Filter Chain의 특정 Filter에 도달했을 때, Spring Security의 컴포넌트들이 어떤 과정을 거쳐 사용자의 인증 요청을 처리하는지에 대한 흐름은 아래와 같음 -먼저, 위의 그림은 가장 일반적인 인증 방식인 ID/Password(Spring Security에서의 Username/Password)를 이용한 로그인 인증의 처리 흐름임 (1)에서 사용자가 로그인 폼 등을 이용해 Username(로그인 ID)과 Password를 포함한 request를 Spring Security가 적용된 애플리케이션에 전송하면 로그인 요청이 Spring Security의 Filter Chain까지 들어오고,..

부트캠프 2023.03.21

Spring Security - DelegatingPasswordEncoder

1.DelegatingPasswordEncoder -Spring Security에서 지원하는 PasswordEncoder 구현 객체를 생성해주는 컴포넌트 -DelegatingPasswordEncoder를 통해 애플리케이션에서 사용할 PasswordEncoder를 결정하고, 결정된 PasswordEncoder로 사용자가 입력한 패스워드를 단방향으로 암호화 해줌 -장점 ● DelegatingPasswordEncoder를 사용해 다양한 방식의 암호화 알고리즘을 적용할 수 있음 ● 암호화 알고리즘을 특별히 지정하지 않는다면 Spring Security에서 권장하는 최신 암호화 알고리즘을 사용하여 패스워드를 암호화할 수 있도록 지원함 ● 패스워드 검증에 있어서도 레거시 방식의 암호화 알고리즘으로 암호화된 패스워드..

부트캠프 2023.03.21

Spring Security - Filter 와 Filter Chain

1.Filter 와 FilterChain -앞서 기본 part 1에서 언급했듯이, 서블릿 필터(Servlet Filter)는 서블릿 기반 애플리케이션의 엔드포인트에 요청이 도달하기 전에 중간에서 요청을 가로챈 후 어떤 처리를 할 수 있도록 해주는 Java의 컴포넌트임 -위의 그림처럼 클라이언트가 서버 측 애플리케이션으로 요청을 전송하면 제일 먼저 Servlet Filter를 거치고, Filter에서의 처리가 모두 완료되면 DispatcherServlet에서 클라이언트의 요청을 핸들러에 매핑하기 위한 작업을 진행함 -Filter Chain은 여러 개의 Filter가 체인을 형성하고 있는 Filter의 묶음을 의미함 ● Filter 와 Filter Chain의 특성Servlet FilterChain은 요청 ..

부트캠프 2023.03.21

Spring Security - 기본 part 1

1.Spring Security -Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크로써, Spring MVC 기반 애플리케이션에 보안을 적용하기 위한 사실상의 표준 -Spring Security를 애플리케이션에 적용하여 할 수 있는 일 다양한 유형의 사용자 인증 기능 적용(폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDAP 인증) 애플리케이션 사용자의 역할(Role)에 따른 권한 레벨 적용 애플리케이션에서 제공하는 리소스에 대한 접근 제어 민감한 정보에 대한 데이터 암호화 SSL 적용 일반적으로 알려진 웹 보안 공격 차단 SSO, 클라이언트 인증서 기반 인증, 메서드 보안, 접근 ..

부트캠프 2023.03.16

인증/보안 - 기초

1.HTTPS -HTTPS(Hyper Text Transfer Protocol Secure Socket Layer) : 암호화를 사용하여 웹사이트와 사용자 간의 통신을 보호하는 보안 프로토콜 -HTTPS는 아래의 목적을 가지고 사용함 ● 암호화(encryption) ○ 제 3자가 서버와 클라이언트가 주고받는 정보를 탈취할 수 없도록 하는 것 ○ HTTPS에서는 클라이언트와 서버가 데이터를 주고받을 때는 대칭키를 사용하고, 대칭키를 주고받을 때는 비대칭키 방식을 사용함 ◎ 대칭키 방식 : 양쪽이 공통의 비밀키를 공유하여 데이터를 암호화 및 복호화하는 것(암호화 비밀키 = 복호화 비밀키) ◎ 비대칭키 방식 : 각각 공개키와 개인키를 가지고 상대가 나의 공개키로 암호화한 데이터를 개인키로 복호화하는 것(암호화..

부트캠프 2023.03.15