중앙정보처리학원

중앙정보기술인재개발원

[중앙정보기술인재개발원] 111일차

테스트 코드 복습[기본] API 계층 테스트슬라이스 테스트란?여러분들이 학습을 위해서 만들어보고 있는 샘플 애플리케이션은 여러 개의 계층으로 나누어져 있습니다.단위 테스트의 경우 일반적으로 특정 모듈이나 계층, 기술에 의존적이지 않도록 작성하는 것이 좋습니다.그런데 단위 테스트 만으로는 애플리케이션의 모든 기능이 정상적으로 동작한다라고 백 퍼센트 보장되지는 않습니다.하나의 애플리케이션은 계층별로 역할이 있고, 계층별로 서로 연동되기 때문에 각각의 계층 별로 잘 동작하는지 테스트를 진행한 후에 마지막으로 통합 테스트를 통해서 계층 간의 연동에 문제가 없는지 확인해야 비로소 개발자의 테스트 작업이 마무리되는 것이라고 할 수 있습니다.이처럼 개발자가 각 계층에 구현해 놓은 기능들이 잘 동작하는지 특정 계층만 ..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 110일차

테스트 코드 복습[기본] JUnit으로 비즈니스 로직에 단위 테스트 적용하기이 전 챕터에서 여러분은 JUnit을 사용하지 않고, 단위 테스트를 작성하는 기본적인 방법을 학습했습니다.이번 챕터에서는 JUnit을 학습하면서 이 전 챕터에서 Junit을 사용하지 않고 작성한 테스트 케이스에 JUnit을 적용해 보도록 하겠습니다.JUnit이란?JUnit은 Java 언어로 만들어진 애플리케이션을 테스트하기 위한 오픈 소스 테스트 프레임워크로서 사실상 Java의 표준 테스트 프레임워크라고 해도 과언이 아닙니다.TestNG라는 JUnit의 강력한 경쟁자가 있긴 하지만 JUnit은 여전히 Java 애플리케이션 테스트를 위한 핵심입니다.JUnit은 2022년 현재 Junit 5가 릴리스 된 상태이며, 이번 학습에서도 J..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 109일차

테스트 코드 복습단위 테스트(Unit Test)란?테스트 세계에서는 단위 테스트(Unit Test)라는 용어가 빠지지 않고 나옵니다.단위 테스트란 무얼 의미하는 걸까요?단위 테스트(Unit Test)라는 용어에서 테스트는 우리가 앞에서 이미 테스트의 의미에 대해서 이야기했기 때문에 잘 알고 있을 것입니다.이제 ‘단위’에 대해서만 그 의미를 파악하면 될 것 같습니다.얼핏 봐도 테스트를 어떤 특정한 단위로 구분해서 진행을 해야 될 것만 같은데, 어떤 단위를 기준으로 정해야 될지 한 번 살펴보겠습니다.기능 테스트위 그림을 보면 기능 테스트가 테스트의 범위가 제일 큰 것을 볼 수 있습니다. 단위로 따지자면 단위가 가장 큽니다.기능 테스트는 주로 애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 108일차

OAuth2 복습Hello, OAuth 2 샘플 애플리케이션 구현 의존성 추가OAuth 2 인증을 사용하기 위해 제일 먼저 해야 할 작업은 OAuth 2에 대한 의존성을 추가하는 것입니다.......dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-t..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 107일차

OAuth2 복습OAuth2의 동작 방식이전 챕터에서 OAuth 2가 무엇인지 살펴보면서 OAuth 2의 개념을 이해하기 위해 OAuth 2의 단순한 아키텍처를 확인해 보았는데, OAuth 2의 동작 방식은 앞에서 보았던 아키텍처보다는 조금 더 복잡한 흐름으로 구성됩니다. OAuth 2 인증 컴포넌트(Component, 구성요소)들의 역할OAuth 2 인증 프로토콜의 흐름을 이해하기 위해서는 OAuth 2 인증을 처리하는 컴포넌트에는 어떤 것이 있고, 각각의 컴포넌트들이 어떤 역할을 하는지 이해하는 것이 중요합니다.Resource OwnerResource Owner는 사용하고자 하는 Resource의 소유자를 말합니다.⭐ Resource Owner는 한마디로 Google 등의 서비스를 이용하는 사용자입니..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 106일차

OAuth2 복습OAuth 2란?앞에서의 예시와 같이 여러분들이 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현됩니다.전통적으로 특정 애플리케이션의 서비스를 이용하는 사용자에 대한 인증 처리는 해당 서비스를 직접적으로 제공하는 애플리케이션에서 담당해 왔습니다.인증 서버를 별도로 분리해서 인증을 처리하든 하나의 서버에서 사용자의 인증도 처리하고 그와 동시에 애플리케이션의 서비스도 함께 제공하든 어쨌든 서비스를 제공하는 애플리케이션에서 해당 서비스를 이용하는 사용자의 크리덴셜(Credential)을 직접적으로 관리하는 것이 일반적입니다.예를 들어 사용자에 대한 일정 관리 서비스를 제공하는 애플리케이션이 있다고 가정하겠습니다. 이 일정 관리 서비스는 특별히 ..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 105일차

JWT 로그인 구현 복습 JWT 자격 증명을 위한 로그인 인증 구현1️⃣ Custom UserDetailsService 구현Spring Security에서 사용자의 로그인 인증을 처리하는 가장 단순하고 효과적인 방법은 데이터베이스에서 사용자의 크리덴셜을 조회한 후, 조회한 크리덴셜을 AuthenticationManager에게 전달하는 Custom UserDetailsService를 구현하는 것입니다.MemberDetailsServicepackage com.springboot.auth.userdetails;import com.springboot.auth.utils.CustomAuthorityUtils;import com.springboot.exception.BusinessLogicException;impo..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 104일차

JWT 복습JWT(JSON Web Token)JWT는 데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식으로써 토큰 인증 방식에서 가장 범용적으로 사용되며 JSON 포맷의 토큰 정보를 인코딩 후, 인코딩 된 토큰 정보를 Secret Key로 서명(Sign)한 메시지를 Web Token으로써 인증 과정에 사용합니다.JWT 공식 사이트 : https://jwt.io/ JWT.IOJSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.jwt.io JWT의 종류JWT는 보통 다음과 같이 두 가지 종류의 토큰을 사용자의 자격 증명에 이용합니다...

중앙정보기술인재개발원

[중앙정보기술인재개발원] 103일차

Spring Security 복습보안이 적용된 웹 요청의 일반적인 처리 흐름(1)에서 사용자가 보호된 리소스를 요청합니다.(2)에서 인증 관리자 역할을 하는 컴포넌트가 사용자의 크리덴셜(Credential)을 요청합니다.사용자의 크리덴셜(Credential)이란 해당 사용자를 증명하기 위한 구체적인 수단을 의미합니다. 일반적으로는 사용자의 패스워드가 크리덴셜에 해당합니다.(3)에서 사용자는 인증 관리자에게 크리덴셜(Credential)을 제공합니다.(4)에서 인증 관리자는 크리덴셜 저장소에서 사용자의 크리덴셜을 조회합니다.(5)에서 인증 관리자는 사용자가 제공한 크리덴셜과 크리덴셜 저장소에 저장된 크리덴셜을 비교해 검증 작업을 수행합니다.(6) 유효한 크리덴셜이 아니라면 Exception을 throw 합..

중앙정보기술인재개발원

[중앙정보기술인재개발원] 102일차

Spring Security 복습 Spring Security란?Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크( Spring MVC 기반 애플리케이션에 보안을 적용하기위한 사실상의 표준 )특정 보안 요구 사항을 만족시키기 위한 코드의 커스터마이징이 용이하고 유연한 확장이 가능Spring Security로 할 수 있는 보안 강화 기능다양한 유형(폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDAP 인증)의 사용자 인증 기능 적용애플리케이션 사용자의 역할(Role)에 따른 권한 레벨 적용애플리케이션에서 제공하는 리소스에 대한 접근 제어민감한 정보에 대한 데이터 암호화SSL 적용일반적..

기록하는 개발
'중앙정보처리학원' 태그의 글 목록