본문 바로가기

BackEnd/Server22

[OAuth] OAuth2.0란? OAuth(Open Authorization)란? 자신이 소유한 리소스에 소프트웨어 애플리케이션이 접근할 수 있도록 허용해 줌으로써 접근 권한을 위임해주는 개방형 표준 프로토콜 OAuth 탄생 배경 OAuth이 등장하기 전에 A 사이트에서 B 사이트의 리소스를 가져오기 위해서는 다른 사이트의 ID와 Password를 직접 입력 받아 저장하여 필요할 때마다 불러와서 사용을 해야했다. 위와 같은 방식을 사용하게되면 다음과 같은 문제가 발생한다. 사용자 : A 사이트에 B사이트의 ID와 Password를 넘겨주는 것에 대해 신뢰할 수 없다. A 사이트 : ID와 Password를 받았기 때문에 보안 문제가 생기는 경우 모든 책임을 져야한다. B 사이트 : A 사이트를 신뢰할 수 없다. 위와 같은 문제를 해결하.. 2021. 10. 19.
Node.js와 Spring 비교 Node.js 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼 작성 언어 : JavaScript Node.js 특징 싱글 스레드의 non-blocking I/O 이벤트 기반 비동기 방식으로 작동한다. 서버의 무리가 적다. JavaScript 엔진(V8 Engine)으로 빌드된 JavaScript 런타임이다. c++로 개발된 V8 JavasScript Engine이기 때문에 확장성이 좋다. 개발속도 향상이 가능하다. JavaScript를 사용하면 JSON 데이터 다루기가 용이하다. npm(node package manager)를 통해 다양한 패키지를 제공한다. non-blocking I/O 호출 직후 프로그램으로부터 제어가 돌아오기 때문에, 시스템 호출 종료를 기다리.. 2021. 9. 17.
[RESTful] API 설계 PUT vs PATCH API Endpoint를 설계할 때 항상 CRUD(Create, Read/Retrieve, Update, Delete) 작업에 사용할 HTTP 메서드를 지정해야 한다. 일반적으로 다음과 같이 정리된다. Create : POST Read/Retrieve : GET Update : PUT/PATCH Delete : DELETE Update의 경우 PUT과 PATCH 두 가지 매서드가 존재하는데, 두 방법 모두 한 Location에서 리소스를 업데이트하는 역할을 하지만 방식이 다르다. 여기서 말하는 '한 Location에서 리소스를 업데이트'란 무엇을 뜻하는 것일까? HTTP Request 대상을 "resource(리소스)"라고 부르는데, 리소스는 문서, 사진 그 어떤 객체든 될 수 있으며 각 리소스는 HTT.. 2021. 8. 24.
[JWT] JWT(JSON Web Token)의 저장 위치 비교 JWT(JSON Web Token)는 JSON 형태의 토큰으로 클라이언트가 서버에 자원을 요청할 때 요청과 함께 전달하여 요청 권한을 증명할 수 있다. 서버가 토큰을 발급해주면, 브라우저에서 클라이언트/서버 간에 토큰을 전달하는 방식은 크게 두 가지로 나뉜다. 1. HTML5 Web Storage(LocalStorage 또는 SessionStorage) 2. Cookie HTML5 Web Storage Cookie의 단점 웹 브라우저에서 쿠키의 저장 한도는 약 4KB로 제한된다. 쿠키는 모든 HTTP 요청과 함께 전송되므로 웹 애플리케이션 성능이 저하된다. HTML5 Web Storage란 무엇인가? 사용자가 key/value 쌍의 형태로 데이터를 유지할 수 있도록하는 간단한 클라이언트 측 데이터베이스이.. 2021. 8. 22.
[JWT] JWT(JSON Web Token) 설명 및 구조 JWT이란? JWT(JSON Web Token)은 정보 수신/송신자 간에 정보를 JSON 객체로 안전하게 전송하기 위한 간결하고 Self-contained한 방법을 정의하는 개방형표준(RFC 7519)이다. 이 정보는 디지털 서명되어 있으므로 확인 및 신뢰가 가능하다. JWT는 Secret( HMAC 알고리즘 사용)을 사용 하거나 RSA 또는 ECDSA를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있다. JWT를 암호화하여 수신/송신자 간에 기밀도 제공할 수 있지만, 서명된 토큰에 초점을 맞출 것이다. 서명된 토큰은 해당 토큰에 포함된 클레임의 무결성을 확인할 수 있는 반면, 암호화된 토큰은 다른 당사자로부터 해당 클레임을 숨길 수 있다. 공용/개인 키 쌍을 사용하여 토큰에 서명할 때 서명은 개인 .. 2021. 8. 21.
[JWT] 서버 기반 인증 vs 토큰 기반 인증 서버 기반 인증 서버 기반 인증 시스템의 흐름 기존의 인증 시스템에서는 서버측에서 유저들의 정보를 기억하고 있어야 한다. 유저들의 정보를 기억하기 위해서 세션을 이용하는데, 이 세션을 유지하기 위해서는 메모리/디스크/데이터베이스 시스템과 같은 여러가지 방법을 이용했다. 서버 기반 인증 시스템의 흐름을 보자면 다음과 같다. 이런 방식의 인증 시스템은 아직도 많이 사용되고 있다. 하지만, 서버 기반 인증 시스템은 아래와 같은 문제를 가진다. 서버 기반 인증의 문제점 세션 유저가 인증을 할 때, 서버 측에 이러한 정보를 저장해야 하며, 이를 세션이라고 부른다. 대부분의 경우엔 메모리에 이를 저장하나 로그인 중인 유저의 수가 늘어난다면, 서버 측 메모리가 과부화가 올 것이다. 이를 피하기 위해 데이터베이스를 이.. 2021. 8. 20.
반응형