분류 전체보기176 Spring Security를 이용한 Auth 구현 앞서 Spring Security를 사용하지 않고 Interceptor를 이용한 A/A 구현 및 Spring Security의 구조 등을 살펴보았습니다. 이 포스트에서는 이를 기반으로 Spring Security를 이용하여 A/A 기능을 구현해 보도록 하겠습니다. (1) Maven dependency추가 org.springframework.boot spring-boot-starter-security (2) Spring-security config 보안 흐름을 정의하기 위해서 WebSecurityConfigurerAdapter를 확장합니다. 여기에서 다음과 같은 설정들을 할 수 있습니다. 어떤 요청에 대해서 인증을 요구할 것인지 특정 요청에 대해서 어떤 권한을 요구할 것인지 인증되지 않은 요청을 어떤 ur.. 2020. 10. 12. Spring-Security Authentication Structure Spring-security는 많은 Filter의 chain으로 구성되어 있습니다. 따라서 요청이 들어오면 Authentication/Authorization을 위해 일련의 Filter를 거치게 됩니다. 사용자 인증 요청 시에는 인증 모델을 기반으로 적합한 Filter를 찾을 때까지 Filter chain을 통과합니다. 이 포스트에서는 UsernamePasswordAuthenticationFilter에 도달할 때까지 Filter chain을 통과하도록 코드를 작성할 것입니다. UsernamePasswordAuthenticationFilter를 AuthenticationFilter라고 칭할 것이며 이 Filter의 동작 방식을 그림과 함께 살펴보겠습니다. [request with invalid sessio.. 2020. 10. 12. Interceptor를 이용한 Auth 구현 interceptor vs spring security 앞서 언급하였듯이, 대부분의 웹 애플리케이션은 Authentication(인증)/Authorization(권한) 기능을 구현하고 있습니다. 이 과정에 필요한 인증된 사용자 정보를 저장하기 위해 Session 혹은 JWT(JSON Web Token) 등을 이용할 수 있는데, 이 포스트에서는 Session에 저장한다고 가정하겠습니다. Spring-security가 정교화되기 전까지는 A/A 기능을 직접 Session에 접근하여 조작했습니다. (Spring-security도 내부적으로는 Session을 이용하지만 out-of-box로 구현되어 있어, 제공되는 정형화된 API를 이용해 A/A를 구현할 수 있습니다. 뿐만 아니라 보안적인 이슈까지도 처리할 수.. 2020. 10. 12. [Postman 사용법] 9. 모의서버 1. Mock Server? 모의 서버는 프론트엔드 혹은 백엔드의 지연으로 인해 포스트맨의 작업이 효율적으로 완료되지 못하는 것을 완화하기 위해 사용하는 것으로, 실제 요청을 보내기 전에 이 모의 서버를 만들어 각 엔드포인트와 해당 응답을 시뮬레이션할 수 있도록 도와주는 기능입니다. 이를 사용하면 백엔드를 돌리지 않고 잠재적인 응답을 볼 수 있습니다. 모의 서버는 API 개발의 가장 초기 단계에서 팀 구성원 간의 명확한 의사소통을 도와주고 기대치를 조정하는데 도움을 줍니다. 결과적으로 개발 프로세스의 모든 팀이 병렬로 작업할 수 있어 지연을 완화합니다. 포스트맨을 사용하면 두 가지 유형의 모의 서버를 만들 수 있습니다. 개인 모의 서버 : 비공개로, 사용자가 요청 헤더에 포스트맨 API 키를 추가해야 합.. 2020. 8. 19. [Postman 사용법] 8. Monitoring 1. Monitoring? 포스트맨은 컬렉션을 정기적으로 실행하여 성능과 응답을 확인할 수 있도록 모니터링 기능을 제공합니다. 컬렉션의 모든 요청이 올바르게 동작하는지 확인하기 위해 최소 5분, 최대 주 1회 단위로 자주 실행하도록 설정할 수 있습니다. Environment를 설정할 수 있으며, 테스트가 있는 요청의 경우에는 테스트가 실패했을 때 사용자에게 경보를 알립니다. 이 경보 수신 방법에 대해서는 별도로 지정이 가능합니다. (1) 가격 모니터링의 경우 아래와 같이 비용이 적용됩니다. Postman Postman Pro Postman Enterprise 요청 건수/month 1000건 1만건 10만건 요청 건수 추가 비용 X 초과 1000건당 $0.75 단, 한달에 1회 5만 건을 $20에 사전 구.. 2020. 8. 19. [Postman 사용법] 7. Test Automation (Newman & Jenkins) 1. Newman? Newman은 포스트맨을 위한 커맨드 라인 Collection Runner입니다. 확장성을 염두에 두고 설계되었기 때문에 다른 서버나 시스템과 쉽게 통합이 가능합니다. 그래서 Jenkins나 Travis CI, Docker 등 많은 다른 서비스와 함께 사용하는 경우가 많습니다. 먼저 Newman을 설치해 보도록 하겠습니다. Newman은 npm 레지스트리 와 github 에 있습니다. 단, Newman은 node.js 기반으로 동작하기 때문에 Newman을 실행하려면 node.js가 필수적으로 설치되어 있어야 합니다. node.js가 설치되어 있다고 가정하고, newman을 설치하고 collection을 실행해 보겠습니다. npm install -g newma.. 2020. 8. 19. [Postman 사용법] 6. CRUD 작성 예제 1. CRUD 작성 앞선 장에서 배운 것들을 토대로 간단한 CRUD를 수행하는 테스트를 작성해 보겠습니다. 테스트를 위한 백엔드 서버 프로그램은 GitHub에 올려두었습니다. (1) Get All Boards 현재 존재하는 전체 게시물 수를 가져오는 요청입니다. 응답이 정상적으로 왔는지, 반환된 데이터의 수가 총 3개로 일치하는 지를 검사합니다. (서버 프로그램을 올린 직후에는 초기 데이터로 게시물 3개가 데이터베이스가 존재합니다) 요청의 결과가 정상적으로 동작하였음을 확인할 수 있습니다. (2) Create Boards 다음으로 게시물 하나를 추가해보도록 하겠습니다. form-data로 데이터를 전송하며, 이 경우 파일을 함께 전송할 수도 있습니다. 파일 업로드의 경우 아래에서 update 예제로 다루.. 2020. 8. 19. [Postman 사용법] 5. 연쇄 요청 간 데이터 유지 및 세션 동작 방식 1. Chained Request 4장까지 기본적인 Postman의 사용법에 대해 알아보았습니다. 더 많은 기능들이 존재하지만, 여기까지만 알고 있다면 앞선 요청에서 반환된 데이터를 이어지는 요청에서 사용할 수 있도록 연쇄 요청을 작성할 수 있습니다. 세션 토큰이나 사용자 ID와 같은 정보를 이어지는 요청에서 계속적으로 사용해야 할 때 주로 이 방식을 이용합니다. 이어지는 요청 간에 데이터를 유지하기 위해서는 응답으로 받은 데이터를 추출하여 전역 변수나 환경 변수에 저장하는 작업이 필요합니다. 간단한 예와 함께 확인해보도록 하겠습니다. 게시물을 삽입하는 요청과 삽입된 게시물의 ID를 받아 첨부 이미지 파일을 게시물 정보에 추가하는 요청이 있다고 가정해 봅시다. 이 요청은 boardId를 반환합니다. bo.. 2020. 8. 19. [Postman 사용법] 4. 변수 (Environment 및 Global variables) 포스트맨에도 변수라는 개념이 존재합니다. 일반적으로 개발에서 사용되는 변수와 동일한 변수를 의미하며, 동일한 목적으로 사용됩니다. 그중에서도 Environment와 Global 변수는 조금 다르게 사용되는데 이를 중점으로 살펴보겠습니다. 1. Postman의 변수 포스트맨의 변수(variables)는 일반적으로 사용되는 변수와 같은 방식으로 동작합니다. 여러 위치에서 변수의 값을 재사용할 수 있으며, 값을 변경하면 해당 변수의 인스턴스 각각이 변경된 값으로 적용됩니다. 예를 들어 동일한 도메인을 사용하는 여러 API 엔드포인트가 있다고 가정했을 때, 도메인을 변수로 저장해놓으면, 값을 반복하는 대신 요청에서 {{domain}}/endpoint1과 domain/endpoint2와 같이 사용할 수 있습니다... 2020. 8. 19. [Postman 사용법] 3. 응답 검증 (Test Scripts) 요청에 대한 응답이 예상한 응답과 동일한지 검증하기 위해 Test scripts를 작성합니다. 이 장에서는 Test scripts를 작성하는 방법 및 예제를 살펴보겠습니다. 1. 포스트맨의 Scripts란? 2. Pre-request scripts란? 3. Test scripts란? 4. Script Example 5. 분기 및 반복 1. 포스트맨의 Scripts란? 포스트맨은 Node.js 기반의 런타임을 포함하고 있어, Request와 Collection에 동적으로 동작을 추가할 수 있습니다. 이를 통해 동적 매개변수를 사용하거나 요청 간에 데이터를 전달하는 것이 가능합니다. 이런 동적 작업을 수행하는 2가지 이벤트 흐름에 대해 자바스크립트 코드를 작성할 수 있습니다. Pre-request Scrip.. 2020. 8. 19. 이전 1 ··· 11 12 13 14 15 16 17 18 다음