전체 글

테스트코드

숫자 야구 게임

Test Driven Development(테스트 주도 개발, TDD) 용어 정리 Produection Code : 프로그램 구현을 담당하는 부분으로 사용자가 실제로 사용하는 소스 코드 Test Code : 프로덕션 코드가 정상적으로 동작하는지를 확인하는 코드 TDD TDD = TFD(Test First Development) + 리팩토링 TDD란 프로그래밍 의사결정과 피드백 사이의 간극을 의식하고 이를 제어하는 기술 - 켄트벡 TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점이다. TDD는 분석 기술이며, 설계 기술이기도 하다. - 켄트벡 TDD 및 단위 테스트를 기반으로 개발하려면 To-Do-List가 잘 정리되어 있어야 한다. To-Do-List를 잘 정리했다는 것은 요구사항 분석을 잘했다는 ..

Error

org.springframework.beans.factory.UnsatisfiedDependencyException

토큰 유효성을 검사하는 테스트를 진행 중 에러가 발생해서 Application을 실행시켜보았더니 아래와 같은 에러가 발생했다. 처음 이미지의 에러를 살펴보니 아래와 같은 메시지가 있었다. JdbcSQLSyntaxErrorException의 경우 보통 SQL 예약어를 사용한 경우가 원인이라고 나왔다. sql 예약어를 찾아보니 VALUES가 있었다. 혹시나 해서 value를 다른 이름으로 바꾸고 시도했더니 그래도 에러가 발생했다. 그러다가 두 번째 이미지에서 아래와 같은 메시지를 찾았다. properties를 확인해보니 authorization-uri가 없었다. 추가해서 실행시켜보니 에러가 해결되었다.

Spring Security

[JWT] JWT 구조

https://jwt.io/introduction JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io JWT(JSON Web Token) 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준( RFC 7519 )이다. RFC 7519: JSON Web Token (JWT) www.rfc-editor.org JWT를 암호화하여 당사자 간에 비밀성을 제공할 수도 있지만 서명된 토큰으로 사용할 수도 있다. 구조 Header Payload Signature xxxxx.yyyyy.z..

Spring Security

[웹 보안] RSA

JWT를 이해하기 전 RSA에 대해 간단히라도 알고 있는 것이 좋다. RSA 암호는 두 가지의 키를 가지고 있다. Public Key : 공개키 Private Key : 개인키 각 사용자는 자신의 공개키와 비밀키를 가지고 있다. 그리고 이 공개키는 말 그대로 공개되어도 괜찮은 키이다. 따라서 A 사용자가 B의 공개키를 통해 암호화할 수 있다. 이렇게 B의 공개키로 암호화되면 이것은 B의 개인키로만 복호화를 할 수 있다. 메시지의 내용이 노출되어도 상관없고 누가 보냈는 지가 더 중요한 경우가 있을 수 있다. A가 B에게 'A가 C에게 1억을 송금했다.'라는 메시지를 보낸다고 하자. 그러면 A는 이 메시지를 A의 개인키로 암호화해서 보낸다. A의 개인키로 암호화하면 A의 공개키로 열어 볼 수 있다. A의 공..

Spring Security

[웹 보안] TCP

OSI 7 계층 롤을 플레이한다고 할 때 응용 계층인 롤 프로그램에서 궁극기를 쓰면, 그 데이터가 표현 계층에서 암호화된다. 만약 사진을 보낸다고 하면 표현 계층에서 사진의 데이터 크기가 크다면 압축을 한다. 그 후 세션 계층으로 와서 상대방에게 데이터를 보낼 수 있는지, 즉 인증이 되어 있는지 확인한다. 그 후 전송 계층에서 TCP 통신을 할지 UDP 통신을 할 지 결정을 한다. https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/ TCP 클라이언트가 서버로 메시지를 보내면 서버는 잘 받았다는 의미로 ACK 신호를 보낸다. 그러면 클라이언트는 서버가 데이터를 잘 받았다는 것을 인식하고 ..

Spring Security

[웹 보안] 세션

JWT(Json Web Token)에 대해 이해하기 전에 알고 있으면 좋은 개념들을 먼저 알아보자 세션 유저가 웹 브라우저를 통해 네이버 서버에 www.naver.com라고 적어서 요청을 하면 서버는 해당 주소에 맞는 컨트롤러의 메서드를 찾는다. 그리고 메서드에서 요청에 맞는 html 파일을 응답해 준다. 이때 http header를 단다. 이 header에 쿠키를 만들어서 쿠키에 세션 id를 담아서 준다. 웹 브라우저는 이 세션 id를 받아서 브라우저의 쿠키라는 저장영역에 세션 id가 담긴다. 이는 최초 요청 시에 만들어진다. 두 번째 요청부터는 브라우저가 쿠키에 있는 세션id를 가지고 간다. 두 번째 요청부터는 서버가 세션 id를 생성하지 않고 기존의 세션 id를 그대로 돌려준다. 서버는 세션id를 ..