Rest란?
자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 소프트웨어 아키텍처로 자원지향구조(ROA: Resource Oriented Architecture)이다.
HTTP Method, Status Code를 용도에 맞게 써야하며 6가지 제약 조건이 있다.
- 클라이언트/서버 구조 : 일관적인 인터페이스로 분리되어야 한다 서버는 API제공과 제공한 API를 이용해 비즈니스 로직을 처리하거나 저장하는 역할 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보) 등을 관리하는 역할
- 무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안되며 통신에는 상태가 없어야하고 필요한 모든 정보는 요청에 담고있어야 한다.
- 캐시 처리 가능(Cacheable) : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킨다.
- 계층화(Layered System) : 클라이언트는 서버만 호출을 하고 서버가 다중 계층으로 구성될수 있다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
- Code on demand(optional) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
- 인터페이스 일관성(Uniform Interface) : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다.
Restful 이란?
Rest 제약 조건을 모두 만족 시킨것을 Restful 이라고 한다.
Restful API란?
Restful을 만족하는 API 서비스를 Restful API 라고 한다.
Restful API 인증 방식
- API 키 방식 : 유저별로 String key 사용
- API Token : API 호출에 사용할 기간이 유효한 토큰을 발급. 연쇄 개인정보 탈취를 방지
- HTTP Basic Auth : 아이디 비밀번호를 요구하는 로그인 창이 표시되고 HTTP Header에 Base64 인코딩을 통해 인증데이터를 전송한다. 네트워크 상에서 패킷탈취 및 디코딩 가능성이 있으므로 보안 프로토콜을 사용해야 한다.
- Digest Access Authentication : 클라이언트가 인증을 요청할 때 클라이언트가 서버로부터 난수값을 받고, 그 난수값을 이용해 데이터를 해싱하는 형태이다 중간자 공격에서도 비밀번호 등의 추출을 어려워서 Basic Auth보다 향상된 보안을 제공한다.
- 제 3자 인증(OAuth 2.0)
- JWT (Json Web Token) : 권한 인가내용을 같이 삽입. 성능상의 이점이 생긴다
'Develop > java,spring' 카테고리의 다른 글
DDD Start (Domain-Driven Design) 도메인 주도 설계 (0) | 2020.12.29 |
---|---|
JWT(Json Web Token) 이란? (0) | 2020.12.15 |
git 명령어 (0) | 2020.12.01 |
Okta(옥타) SSO(OIDC - Open ID Connect Application) 로그인 (1) | 2020.11.30 |
Java Stream GroupingBy 사용 (0) | 2020.11.26 |