버져닝
새 개념은 새 URI로
- 의미론 적으로 새로운 기능을 제공하는 경우 새 URI 를 사용한다.
- 의미론 적으로 같다면 URI 가 바뀌어서는 안된다: URI 는 버져닝을 하지 않는다.
요약자 주.
본 서적에서는 URI 로는 버져닝을 하지 말것을 제시하고 있다. 개념적으로 같은 기능에 버져닝이 들어간다는것은 "유일한 식별자" 로서의 제약사항을 위배하기 때문이라 생각된다. 그러나 현재의 RESTful API 는 필수적으로 버져닝을 다루고 있다.
- URI에 추가
- query parameter 로 받기
- custom header
- 컨텐츠 협상
추정컨데, 본 서적은 WRML 기반의 REST API 구현론을 제시하는 책이므로 URI 에서 버져닝을 하는 대신 WRML 스키마를 통해 버져닝을 대신할 수 있다고 판단하기 때문에 그렇게 기술한게 아닌가 싶다. 현재의 최신 웹 트랜드에서는 버져닝을 중요한 주제로 다루고 있으므로 위 제약 사항은 적절하지 않다고 생각한다.
ETag
ETag 는 문서의 고윳값이므로 그 자체만으로 버져닝을 한다고 볼 수 있다.
보안
OAuth
- 권한 부여를 위해 OAuth 를 사용할 수 있다.
- OAuth 를 이용하려는 Client (Application server) 와 Resource Server 를 분리한다.
- Client 는 Authorization Server 로 부터 발급받은 Access Token 으로 Resource Server 에 접근한다.
- Resource Server 는 Client 가 제시한 Access Token 을 검증하여 허가 받은 행위를 허용한다.
요약자 주.
OAuth 는 개인정보의 소유자와 사용자를 분리하는 표준으로, 특정 서비스를 사용하기 위해 사용자가 개인정보를 제출해야만 하는 상황을 막아준다. 일반적인 OAuth 2.0 의 플로우는 다음과 같다.
- 사용자가 클라이언트에 로그인을 요청한다.
- 클라이언트는 사용자를 인증 서버의 로그인 페이지로 리다이렉션 한다. 이때 클라이언트의 콜백 정보를 넘겨준다.
- 사용자는 인증 서버에 로그인을 한다.
- 인증 서버는 사용자를 클라이언트의 콜백 주소로 리다이렉션 한다. 이때 Authorization Code 를 함께 전달한다.
- 클라이언트는 Authorization Code 를 인증 서버에 제출한다.
- 인증 서버는 클라이언트에 Access Token 을 발급해준다.
- 인증 서버는 Access Token 으로 Resource Server 에 접근한다.
- Resource Server 는 클라이언트가 제시한 Access Token 이 유효하고 요청한 작업에 권한이 있다면 이를 수용한다.
OAuth 2.0 에서는 8번, Access Token 의 유효성 검증에 대한 별도의 표준은 없으며 크게 두가지 방법을 이용한다.
- 인증서버에서 제공하는 API 로 Access Token 을 검증.
- Access Token 가 전자 서명 키이며, 이를 공개키로 검증.
CORS
- Cross-Orrigin Resource Sharing 을 지원한다.
- 서버는 Access-Control-Allow-Origin 헤더에 CORS 를 허용하는 사이트를 기록하여 클라이언트에 제공한다.
- 서버는 Access-Control-Request-Method 헤더에 CORS 를 허용하는 method 를 기록하여 클라이언트에 제공한다.
- 클라이언트는 JavaScript 를 이용해 런타임에 Cross Site 요청을 보낼 수 있다.
'개발' 카테고리의 다른 글
[요약] REST API 디자인 규칙 - 05. 표현 디자인 (0) | 2022.04.10 |
---|---|
[요약] REST API 디자인 규칙 - 04. 메타데이터 디자인 (0) | 2022.04.10 |
[요약] REST API 디자인 규칙 - 03. HTTP를 이용한 인터랙션 설계 (0) | 2022.04.07 |
[요약] REST API 디자인 규칙 - 02. URI 식별자 설계 (0) | 2022.04.07 |
[요약] REST API 디자인 규칙 - 01. REST 소개 (0) | 2022.04.07 |