본문 바로가기

전체 글290

2022. 11. 28. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? OAuth 2 OAuth 2 샘플 애플리케이션 구현 OAuth 2와 JWT를 이용한 샘플 애플리케이션 구현 ▶ 이미 알고 있는 내용은 무엇인가? OAuth 2에 대한 이론적인 부분과 애플리케이션 구현을 위한 사전 작업까지 학습했다. OAuth 2를 적용한 애플리케이션 구현은 처음이다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? spring-boot-starter-oauth2-client 으로 추가하면, 별도의 설정을 하지 않아도 Spring Boot의 자동 구성을 통해 OAuth 2 로그인 인증 기능이 활성화됨 ClientRegistration은 OAuth 2 시스템을 사용하는 Client 등록 정보를 표현하는 객체 Spring Sec.. 2022. 11. 28.
OAuth 2 샘플 애플리케이션 구현 // 서버 측에서 HTML을 렌더링해주는 SSR(Sever Side Rendering) 방식의 애플리케이션 구현 - 의존성 추가 dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' ... } - OAuth 2로 보호되는 .html 파일 생성 (뷰 생성) - 뷰를 리턴하는 Controller를 생성 - application.yml 파일에 .. 2022. 11. 28.
중첩 삼항연산자 삼항연산자 문법 및 사용법 조건 ? 참인 경우 반환 값 : 거짓인 경우 반환 값 if문 예제 public class Test { public String ternaryOperator { int a = 1; if (a == 1) { return "a는 1임"; } else return "a는 1이 아님"; } } 삼항연산자 예제 public class Test { public String ternaryOperator { int a = 1; return a == 1 ? "a는 1임" : "a는 1이 아님"; } } 중첩 if문 예제 public class Test { public String ternaryOperator { int a = 1; int b = 2; if (a == 1) { if (b == 2).. 2022. 11. 26.
OAuth2 개요 OAuth 2 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해주고, Resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 통해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식 사용자의 크리덴셜을 이중으로 관리할 필요가 없음 - 관리하는 크리덴셜이 줄어들기 때문에, 보안성 향상 - OAuth 2에 대해 - https://www.rfc-editor.org/rfc/rfc6749 OAuth 2를 사용하는 애플리케이션 유형 써드 파티 애플리케이션에서 제공하는 API의 직접적인 사용 추가적인 인증 서비스 제공 용도 - 아이디/패스워드 로그인 인증 이외에 OAuth 2를 이용한 로그인.. 2022. 11. 25.
*** 조합(Combination) 조합은 n 개의 숫자 중에서 r 개의 수를 순서 없이 뽑는 경우를 의미한다. - https://ko.wikipedia.org/wiki/%EC%A1%B0%ED%95%A9 조합은 기호로 다음과 같이 나타낼 수 있다. ** 조합은 하나의 원소를 선택할 경우 + 하나의 원소를 선택하지 않을 경우 * n개 중에 m개를 뽑는 경우의 수를 구하는 신기한 풀이 (이해 필요) * class Test { public long solution(int N, int M) { M = Math.min(N - M, M); if (M == 0) return 1; long answer = solution(N - 1, M - 1); answer *= N; answer /= M; return answer; } } // 순열과 조합의 공식을.. 2022. 11. 25.
JWT - Secret Key를 시스템 환경 변수로 등록할 때 주의점 상황 : JWT 서명에 사용되는 Secret Key 정보는 민감한 정보이기 때문에 시스템 환경 변수의 변수로 등록 - 시스템 환경 변수에 등록한 변수는 application.yml 파일의 Property 명과 동일한 문자열을 사용하지 않도록 주의한다. 만약, 동일한 문자열을 포함하고 있을 때, 정해진 우선 순위에 따라 override되기 때문에, 고려해서 명명을 잘 해주어야할 것 같다. 먼저, Spring Environment에 대해 알아보자. Spring Environment는 애플리케이션에서 사용되는 모든 Property Source를 관리하는 컴포넌트이다. Property Source는 애플리케이션에서 사용되는 key/value 쌍의 property를 포함한다. Spring에서는 OS 환경 변수, .. 2022. 11. 25.
Spring Security + JWT 적용 (로그인 인증, 자격 증명, 검증 구현) JWT 적용을 위한 사전 작업 1. 의존 라이브러리 추가 // Spring Security 적용 implementation 'org.springframework.boot:spring-boot-starter-security' // JWT 기능을 위한 jjwt 라이브러리 implementation 'io.jsonwebtoken:jjwt-api:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly'io.jsonwebtoken:jjwt-jackson:0.11.5' 2. SecurityConfiguration 추가 H2 웹 콘솔을 정상적으로 사용 .frameOptions().sameOrigin() CSRF(Cross-Site Request Forg.. 2022. 11. 25.
2022. 11. 25. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? OAuth 2 OAuth 2이란? OAuth 2의 동작 방식 OAuth 2 인증을 위한 사전 작업 ▶ 이미 알고 있는 내용은 무엇인가? OAuth 2에 관해서는 처음 학습하는 내용들이다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? OAuth 2는 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 접근 권한에 대한 토큰을 발급한 뒤 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식 OAuth 2를 사용하는 애플리케이션 유형 써드 파티 애플리케이션에서 제공하는 API를 직접적으로 사용 추가적인 인증 서비스를 제공하.. 2022. 11. 25.
2022. 11. 24. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? JWT 인증 JWT 자격 증명을 위한 로그인 인증 구현 JWT를 이용한 자격 증명 및 검증 구현 ▶ 이미 알고 있는 내용은 무엇인가? JWT의 기본적인 내용은 어제 학습했고, 오늘은 코드로 구현해서 적용시켜볼 것 같다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? Spring Security 기반의 애플리케이션에 JWT를 적용하기 위해서는 jjwt나 Java JWT 같은 별도의 라이브러리가 필요 UsernamePasswordAuthenticationFilter를 이용해 JWT 발급 전의 로그인 인증 기능을 구현 직접 Custom Configurer를 구성해 Spring Security의 Configuration을 커스터마이징 가능 Use.. 2022. 11. 24.