개요 HMAC은 API 서버에 요청자의 신원과 요청 메시지의 무결성을 검증하는데 특화된 해쉬 문자열이다. 일종의 대칭키 암호화에 해당하는데 PKI에 비해 구현의 부담이 적어 널리 사용되고 있다. 이번 글에서는 Amazon S3 REST API를 예로 들어 HMAC을 이용한 클라이언트 인증 방식을 살펴보고자 한다. HMAC 인증 방법 Amazon S3 REST API는 서버와 클라이언트 만이 공유하는 비밀키(Shared Secret, 대칭키)를 이용하여 생성된 서명(Signature)으로 매번 클라이언트로부터의 요청이 올바른지 인증한다. 클라이언트와 서버 사이의 요청-응답 메시지에 대한 보안은 TLS가 적용된 HTTPS 프로토콜을 사용하는 것으로 자연스럽게 수행된다. Signature는 단지 요청한 클라이..
개요 한국에는 드물지만 미국을 비롯한 서구권에는 API를 전문 비즈니스 영역으로 하는 IT 회사들이 많다. 이 회사들의 주요 서비스는 API Proxy(API Gateway)이다. 굳이 돈 주고 써야 하나 싶지만 장점이 한 두개가 아니다. 외부 고객에게 제공되어야 할 사내 API가 각각 분산되어 서로 다른 프로토콜과 형식으로 존재한다고 가정해보자. 진시황이 중국을 통일하자 마자 가장 먼저 도량형을 통일했듯이 클라이언트에게 일관되고 예측 가능한 API를 제공하는 것은 굉장히 중요하다. API Proxy 서비스를 이용하면 이러한 분산되고 불규칙한 서비스를 한데 모아 일관된 규칙의 REST API를 제공할 수 있다.(물론 메타 데이터 맵핑 작업이 선행되어야 한다. 이를 트랜스포메이션이라고 부른다.) 추가적으로..
국제화 작년에 미국, 캐나다 국민을 대상으로 하는 REST API 서비스를 설계한 적이 있다. 당시 고객의 요구사항은 파라메터 입출력에 있어 영어 뿐만 아니라 프랑스어도 지원해달라는 요구가 있었다. 이유는 캐나다의 퀘벡 주는 프랑스어를 사용하기 때문이다. (유명 팝 가수인 셀린 디옹이 퀘벡 출신으로 프랑스어를 구사한다.) 이러한 국제화를 i18n이라고 부른다. 뭔가 거창해 보이고 욕(?) 같아 보이기도 하지만 진짜 의미는 굉장히 단순하다. 그냥 Internationalization의 맨 앞글자 i와 맨 뒷글자 n 사이의 글자수가 18개라서 줄여서 i18n이라고 부르는 것이다.서비스의 국제화 범위는 단순히 메시지에 대한 다국어 지원을 하는 것에서 부터 각 국가의 통화, 날짜 등을 표현하는 것까지 다양하다...
암호화를 하는 이유 인터넷은 공개된 세계이다. A와 B간의 통신에 있어 누구나 중간에 패킷을 가로 채어 내용을 확인할 수 있다.(MITM 공격) 이러한 공격으로 인한 피해를 최소화하기 위해 암호화가 사용된다. 대칭 암호화 대칭(공유키) 암호화는 통신의 당사자인 A와 B가 같은 키를 공유한다. 요청자인 B가 공유키를 이용해 암호화하여 전송하면 응답자인 A가 같은 키를 이용해 복호화 후 다시 같은 키로 암호화하여 응답한다. 비대칭 암호화 비대칭(공개키) 암호화에는 공개키와 개인키 2가지 키가 사용된다.A는 자신에게 데이터를 요청할 모든 대상에게 자신의 공개키를 제공한다.A에게 데이터를 요청할 대상 중 하나인 B는 A로부터 받은 공개키를 이용하여 전송할 데이터를 암호화한다. 이 데이터에는 B만의 공개키가 포함..
- Total
- Today
- Yesterday
- node.js
- maven
- 로드바이크
- 자전거
- 로드 바이크
- 태그를 입력해 주세요.
- JavaScript
- Kendo UI Web Grid
- Docker
- Eclipse
- bootstrap
- graylog
- JHipster
- jsp
- 평속
- CentOS
- MySQL
- chrome
- 알뜰폰
- DynamoDB
- 구동계
- Spring Boot
- Spring MVC 3
- kotlin
- Kendo UI
- Tomcat
- jstl
- jpa
- java
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |