HTTP와 HTTPS의 차이점은 무엇인가요?
RESTful API에 대해 설명해보세요.

 

 

1. HTTP와 HTTPS의 차이점은 무엇인가요?

 

HTTP와 HTTPS - 전송 프로토콜 비교 - AWS (amazon.com)

[Web] HTTP와 HTTPS의 개념 및 차이점 - MangKyu's Diary (tistory.com)

 

  HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜이다.

웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답한다.

웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환한다.

 

간단히 말해 HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술이다.

 

하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에, HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었다. 그리고 이러한 문제를 해결하기 위해 HTTPS가 등장하게 되었다.

 

이름에서 알 수 있듯이 HTTPS(Hypertext Transfer Protocol Secure)는 HTTP의 확장 버전 또는 더 안전한 버전이다.

HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정한다.

 

 

HTTP 프로토콜 작동법은?


  HTTP는 OSI(Open Systems Interconnection) 네트워크 통신 모델의 애플리케이션 계층 프로토콜이다. 

HTTP는 여러 유형의 요청과 응답을 정의한다. 

예를 들어, 웹 사이트의 일부 데이터를 보려는 경우 HTTP GET 요청을 전송한다. 

연락처 양식 작성과 같은 일부 정보를 전송하려는 경우 HTTP PUT 요청을 전송한다.

마찬가지로, 서버는 숫자 코드 및 데이터 양식으로 다양한 유형의 HTTP 응답을 전송합니다. 다음은 몇 가지 예다.

200 - OK(정상)
400 - Bad request(잘못된 요청)
404 - Resource not found(리소스를 찾을 수 없음)
이러한 요청 및 응답 통신은 일반적으로 사용자에게 보이지 않는다. 

브라우저와 웹 서버가 사용하는 통신 방식이므로 World Wide Web은 모든 사용자에게 일관되게 작동한다.

 

 

HTTPS 프로토콜 작동법은?

 


  HTTP는 암호화되지 않은 데이터를 전송한다.

즉, 브라우저에서 전송된 정보를 제3자가 가로채고 읽을 수 있다.

이는 이상적인 프로세스가 아니었기 때문에, 통신에 또 다른 보안 계층을 추가하기 위해 HTTPS로 확장되었다.

HTTPS는 HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합한다.

  HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 한다. 

이러한 웹 사이트는 신뢰를 구축하기 위해 데이터를 교환하기 전에 브라우저와 인증서를 공유한다.

 SSL 인증서는 암호화 정보도 포함하므로 서버와 웹 브라우저는 암호화된 데이터나 스크램블된 데이터를 교환할 수 있다.

프로세스는 다음과 같이 작동한다.

사용자 브라우저의 주소 표시줄에 https:// URL 형식을 입력하여 HTTPS 웹 사이트를 방문한다.
브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성을 검증하려고 시도한다.
서버는 퍼블릭 키가 포함된 SSL 인증서를 회신으로 전송한다.
웹 사이트의 SSL 인증서는 서버 아이덴티티를 증명한다.

브라우저에서 인증되면, 브라우저가 퍼블릭 키를 사용하여 비밀 세션 키가 포함된 메시지를 암호화하고 전송한다.
웹 서버는 프라이빗 키를 사용하여 메시지를 해독하고 세션 키를 검색한다.

그런 다음, 세션 키를 암호화하고 브라우저에 승인 메시지를 전송한다.
이제 브라우저와 웹 서버 모두 동일한 세션 키를 사용하여 메시지를 안전하게 교환하도록 전환한다.

 

 

2.RESTful API에 대해 설명해보세요.

 

 

RESTful API란 무엇인가요? - RESTful API 설명 - AWS (amazon.com)

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

 

  RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다.

대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 합니다.

예를 들어 월간 급여 명세서를 생성하려면 인보이스 발행을 자동화하고 내부의 근무 시간 기록 애플리케이션과 통신하기 위해 내부 계정 시스템이 데이터를 고객의 뱅킹 시스템과 공유해야 한다.

RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 이러한 정보 교환을 지원합니다.

 

Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처입니다.'

REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌습니다.

REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있습니다.

쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있습니다.

 

API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있다.

REST 아키텍처 스타일을 따르는 API를 REST API라고 합니다.

REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.

 

 REST 구성
쉽게 말해 REST API는 다음의 구성으로 이루어져 있다. 

자원(RESOURCE) - URI
행위(Verb) - HTTP METHOD
표현(Representations)


 REST 의 특징


1) Uniform (유니폼 인터페이스)


Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을'

말한다.

2) Stateless (무상태성)


REST는 무상태성 성격을 갖는다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. 

세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 된다.

때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.

3) Cacheable (캐시 가능)


REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능합니다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.

4) Self-descriptiveness (자체 표현 구조)


REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것입니다.

5) Client - Server 구조


REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 된다.

6) 계층형 구조


REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.

 

 REST API 디자인 가이드

 

REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약할 수 있다.

첫 번째, URI는 정보의 자원을 표현해야 한다.
두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

이 두가지는 핵심이라 잊으면 안된다

 

 

REST API 중심 규칙


1) URI는 정보의 자원을 표현해야 한다. (리소스명은 동사보다는 명사를 사용)
    GET /members/delete/1
위와 같은 방식은 REST를 제대로 적용하지 않은 URI다. URI는 자원을 표현하는데 중점을 두어야 한다.

delete와 같은 행위에 대한 표현이 들어가서는 안된다.

2) 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)로 표현
위의 잘못 된 URI를 HTTP Method를 통해 수정해 보면

    DELETE /members/1  으로 수정할 수 있겠다.
회원정보를 가져올 때는 GET, 회원 추가 시의 행위를 표현하고자 할 때는 POST METHOD를 사용하여 표현한다.

회원정보를 가져오는 URI

    GET /members/show/1     (x)
    GET /members/1          (o)
회원을 추가할 때

    GET /members/insert/2 (x)  - GET 메서드는 리소스 생성에 맞지 않다.
    POST /members/2       (o)


[참고]HTTP METHOD의 알맞은 역할
POST, GET, PUT, DELETE 이 4가지의 Method를 가지고 CRUD를 할 수 있다.

 

다음과 같은 식으로 URI는 자원을 표현하는 데에 집중하고 행위에 대한 정의는 HTTP METHOD를 통해 하는 것이

REST한 API를 설계하는 중심 규칙이다.

 

 

URI 설계 시 주의할 점

 


1) 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용


    http://restapi.example.com/houses/apartments
    http://restapi.example.com/animals/mammals/whales

 

2) URI 마지막 문자로 슬래시(/)를 포함하지 않는다.


URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가

다르다는 것이고, 역으로 리소스가 다르면 URI도 달라져야 한다.

REST API는 분명한 URI를 만들어 통신을 해야 하기 때문에 혼동을 주지 않도록 URI 경로의 마지막에는

슬래시(/)를 사용하지 않는다.

    http://restapi.example.com/houses/apartments/ (X)
    http://restapi.example.com/houses/apartments (0)

 

3) 하이픈(-)은 URI 가독성을 높이는데 사용


URI를 쉽게 읽고 해석하기 위해, 불가피하게 긴 URI경로를 사용하게 된다면 하이픈을 사용해 가독성을 높일 수 있습니다.

4) 밑줄(_)은 URI에 사용하지 않는다.


글꼴에 따라 다르긴 하지만 밑줄은 보기 어렵거나 밑줄 때문에 문자가 가려지기도 한다.

이런 문제를 피하기 위해 밑줄 대신 하이픈(-)을 사용하는 것이 좋다.(가독성)

5) URI 경로에는 소문자가 적합하다.


URI 경로에 대문자 사용은 피하도록 해야 한다. 대소문자에 따라 다른 리소스로 인식하게 되기 때문이다.

RFC 3986(URI 문법 형식)은 URI 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하기 때문.


6) 파일 확장자는 URI에 포함시키지 않는다.


    http://restapi.example.com/members/soccer/345/photo.jpg (X)


REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다. 

Accept header를 사용하도록 합시다.

    GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg

 


4-3. 리소스 간의 관계를 표현하는 방법


REST 리소스 간에는 연관 관계가 있을 수 있고, 이런 경우 다음과 같은 표현방법으로 사용한다.

    /리소스명/리소스 ID/관계가 있는 다른 리소스명

    ex)    GET : /users/{userid}/devices (일반적으로 소유 ‘has’의 관계를 표현할 때)


만약에 관계명이 복잡하다면 이를 서브 리소스에 명시적으로 표현하는 방법이 있다.

예를 들어 사용자가 ‘좋아하는’ 디바이스 목록을 표현해야 할 경우 다음과 같은 형태로 사용될 수 있다.

    GET : /users/{userid}/likes/devices (관계명이 애매하거나 구체적 표현이 필요할 때)

 


4-4. 자원을 표현하는 Colllection과 Document

 

Collection과 Document에 대해 알면 URI 설계가 한 층 더 쉬워진다.

DOCUMENT는 단순히 문서로 이해해도 되고, 한 객체라고 이해하셔도 될 것 같다.

컬렉션은 문서들의 집합, 객체들의 집합이라고 생각하시면 이해하시는데 좀더 편하실 것 같다.

컬렉션과 도큐먼트는 모두 리소스라고 표현할 수 있으며 URI에 표현된다.

    http:// restapi.example.com/sports/soccer


위 URI를 보면 sports라는 컬렉션과 soccer라는 도큐먼트로 표현되고 있다고 생각하면 된다. 좀 더 예를 들어보자면

    http:// restapi.example.com/sports/soccer/players/13


sports, players 컬렉션과 soccer, 13(13번인 선수)를 의미하는 도큐먼트로 URI가 이루어지게 된다.

여기서 중요한 점은 컬렉션은 복수로 사용하고 있다는 점이다.

좀 더 직관적인 REST API를 위해서는 컬렉션과 도큐먼트를 사용할 때 단수 복수도 지켜준다면

좀 더 이해하기 쉬운 URI를 설계할 수 있다.

 

'이력서 스터디' 카테고리의 다른 글

4/14(금) 데일리 과제  (0) 2023.04.14
4/13(목) 데일리 과제  (0) 2023.04.13

백엔드
동기 (Synchronous)와 비동기 (Asynchronous) 코드 실행 방식에 대해 설명해보세요.
프로세스 (Process)와 스레드 (Thread)의 차이점은 무엇인가요?

 

 

1. 동기 (Synchronous)와 비동기 (Asynchronous) 코드 실행 방식에 대해 설명해보세요.

 

  동기적 코드 실행 방식은 코드의 실행이 순차적으로 이루어지는 방식이다.

코드의 실행이 이전 작업이 완료되어야 다음 작업이 실행된다. 

 

일반적인 자바스크립트 코드가 동기적으로 실행된다

 

  비동기적 방식은 코드의 실행이 순차적이지 않고, 이전 작업이 완료되지 않아도 다음 작업이 실행된다.

비동기적 코드 실행 방식은 주로 네트워크 요청과 같은 작업에서 사용된다.

 

setTimeout, setInterval, XMLHttpRequest, fetch, Promise, async/await 같은 방식이 있다

 

 

2. 프로세스 (Process)와 스레드 (Thread)의 차이점은 무엇인가요?

 

OS - 프로세스와 스레드 차이 (tistory.com)

 

  프로세스의 사전적 정의는 다음과 같다.

  • 컴퓨터에서 연속적으로 실행하고 있는 컴퓨터 프로그램
  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
  • 운영체제로부터 시스템 자원을 할당받는 자원의 단위

 

  스레드의 사전적 정의는 다음과 같다.

  • 프로새스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 최소 실행 단위

 

  프로세스는 운영체제에서 할당하는 작업의 기본 단위다.

프로세스는 각각의 독립된 메모리 공간을 할당받아 실행되며, 다른 프로세스와는 독립적으로 실행된다.

스레드는 프로세스 내에서 실행되는 작은 작업 단위다.

 

 

 

 

'이력서 스터디' 카테고리의 다른 글

4/17(월) 데일리 과제  (0) 2023.04.17
4/13(목) 데일리 과제  (0) 2023.04.13

백엔드
1. 이벤트 루프 (Event Loop)에 대해 설명해보세요.
2. 콜백 함수 (Callback Function)가 무엇인지, 어떻게 사용되는지 설명해보세요.

 

 

1. 이벤트 루프 (Event Loop)에 대해 설명해보세요.

 

자바스크립트는 싱글 스레드 기반 언어이기 때문에, 한번에 하나씩 작업을 진행한다.

그러나 실제 사용을 해보면 많은 작업이 동시에 처리되고 있는 것을 알 수 있다.

 

이는 자바스크립트가 이벤트루프를 이용해서 비동기 처리를 하고 있기 때문이다.

이벤트 루프를 이용해서 비동기 방식으로 동시성을 지원한다.

 

하지만 비동기로 동작하는 핵심 요소는 자바스크립트가 아닌 브라우저가 가지고 있다.

(Node의 경우 libuv 라이브러리)

 

[JavaScript] 이벤트 루프란? (velog.io)

 

이벤트 루프는 자바스크립트 엔진이 비동기 처리를 위해 콜백 함수를 백그라운드로 보내서 처리하고,

해당 작업이 완료되면 콜백 함수를 태스크 큐(Task Queue)에 추가한다.

 

태스크 큐에는 실행 가능한 작업들이 들어있으며, 이벤트 루프는 콜 스택(Call Stack)이 비어있는지 확인한 후, 

콜 스택이 비어있다면 태스크 큐에서 콜백 함수를 꺼내와 콜 스택에 추가한다. 

이후 콜 스택에서 실행되어 처리된다.

 

그리하여 이벤트 루프는 콜백함수를 비동기적으로 처리하고, 처리된 콜백을 적절한 시점에 콜스택으로 이동시켜

실행되게한다.

이를 통해 js는 비동기 처리를 하면서도 싱글스레드로 동작한다

 

 

 

2. 콜백 함수 (Callback Function)가 무엇인지, 어떻게 사용되는지 설명해보세요.

 

콜백 함수는 함수에 파라미터로 들어가는 함수다

js에서 순차적으로 코드를 실행할 때 쓴다. 이벤트 리스너 쓸때 겪었다

예시로는 .addEventListener를 쓰면 .addEventListener('ㅁㄴㅇ', function(){

}) 이런식으로 썼는데 function()이 콜백이라 할 수 있다

 

 

 

'이력서 스터디' 카테고리의 다른 글

4/17(월) 데일리 과제  (0) 2023.04.17
4/14(금) 데일리 과제  (0) 2023.04.14

개요

 

 

왜 til 양이 적을까요

아팠음

왜 진도 조졌나요

정신없음

 

 

느낀점

 

 

차입이고 네스트고 어느게 좋다 이전에 안 하면 죽어요

 

 

뭘했나

 

 

일퀘도 안 돌렸다,  한게 없음

 

 

 

해냈나

 

 

3끼 챙겨먹기, 잠자기 말고 해낸게 없다

 

 

결론

 

 

 

거울보면서 누칼협 하시오

'내배캠 TIL WIL > 내배캠 wil' 카테고리의 다른 글

내배캠wil 12주차  (0) 2023.02.13
내배캠wil 11주차  (0) 2023.02.06
내배캠 til 56일차 gptChat 체험  (0) 2023.02.02
내배캠wil 10주차  (0) 2023.01.30
wil 9주차 설 연휴의 개발  (0) 2023.01.25

테스트 코드 작성의 중요성 - 하나몬 (hanamon.kr)

 

테스트 코드 작성의 중요성 - 하나몬

❗️개요 ❗️테스트란? 기능을 개발했는데 잘 구현되었는지 어떻게 확인할 수 있을까? 바로 테스트! 기능을 개발한 후 잘 구현되었는지 테스트 코드를 작성하고 리팩토링을 통해 향상시킬 수

hanamon.kr

테스트 코드 한 줄을 작성하기까지의 고난 – tech.kakao.com

 

테스트 코드 한 줄을 작성하기까지의 고난

- 이 글에서 설명한 내용은  if(kakao)2021 에서 보실 수 있습니다. 안녕하세요. 창작자앱개발파트의 Ronda입니다. 창작자 앱 개발파트에서 브런치와 티스토리 안드로이드 앱을 개발하고 있습니다.

tech.kakao.com

누칼협이란 말이 있다

누가 칼들고 협박함?

 

이걸 들을 수도 있는게 배움터다

 

누가 테스트 코드 짜지 말라고 협박함?

아뇨

그럼 해야지

 

누칼협은 그 말 자체가 칼과 다름 없음

따흐흑

 

 

 

1. what

 

테스트코드란 내가 작성한 method가 실제로 재대로 동작하는지 테스트 하는 코드이다.

 

2. why

 

개발 과정에서 문제를 미리 발견할 수 있다. 

리팩토링을 안심하고 할 수 있다. 

빠른 시간 내에 코드의 동작 방식과 결과를 확인할 수 있다. 

좋은 테스트 코드를 연습하다 보면 자연스럽게 좋은 코드가 만들어진다. 

의도한 대로 동작되는 것을 자신감 있게 말할 수 있다.

 

라고 하는데

 

3. when

 

플잭 전후가 있던데

 

테스트 코드는 꼭 필요할까? (tistory.com)

 

테스트 코드는 꼭 필요할까?

Opening 요즘들어 테스트 코드를 짜야할 필요가 있다는 이야기는 여기저기서 자주 들었다. 얼마전에는 우리 회사에서도 테스트 코드를 짜야하지 않겠냐는 논의를 한적이 있었는데, 결론은 일단은

studyandorganize.tistory.com

 

종합해보면 여기처럼 하면서가 맞나벼.....

 

4. how

 

이건 나도 모른다

 

흑흑

 

 

타입스크립트 코드에서 어떤 변수 또는 값의 타입을 표기하기 위해 타입 표기를 사용한다. 타입 표기는 식별자 또는 값 뒤에 콜론(:)을 붙여 value: type 의 형태로 표기한다.
 
const areYouCool: boolean = true;
 
const answer: number = 42;
 
const typescript: string = "great";
 
const greetings: string = `
 
Hello, Readers!
 
Welcome to TypeScript.
 
`;
 
const hasType: Object = {
 
TypeScript: true,
 
JavaScript: false
 
};
 
 
손에 너무 안익는다

좀 늦은 감은 있는데 OAuth 개발하기 전에는 해야지

토큰 기반 인증 Bearer Authentication (ssemi.net)

 

토큰 기반 인증 Bearer Authentication

OAuth를 들어가려고 생각하다가, 이전에 Bearer scheme 부터 조져야 겠다는 생각을 먼저 해봤다 블로그에 글을 쓸 때 마다 드는 생각Bearer scheme 에 대해서 정확히 설명을 하기 위해서 여러 자료들을 봤

www.ssemi.net

HTTP - 인증 : Oauth, JWT, Bearer token (tistory.com)

 

HTTP - 인증 : Oauth, JWT, Bearer token

앞선 글에서 인증 방식에 대해 살펴보았다. 오늘은 쿠키나 세션 기반 인증이 아닌, 토큰 기반 인증 방식에 대해 살펴볼 것이다. 쿠키는 사용자 인증 정보를 담아 HTTP를 통신하게 되면, 제3자가 악

julie-tech.tistory.com

그 와중에 베어러는 참는 놈, 곰...러도 아닌 전달자 라는 뜻

월드 베어러는 세계 참는 새@들이 아니였구나!

 

 

 

일단 토큰 개념부터 

 

토근 기반 인증에서 bearer는 무엇일까? (velog.io)

 

토큰에는 암호화 방식과 타입 등을 나타내는 헤더, 전송할 데이터가 담긴 페이로드,

토큰 검증을 위한 서명을 각각 인코딩(해싱)한 값이 포함되어 있다.

 

데이터가 인코딩이 되어있긴 하지만 누구나 디코딩을 할 수 있어서 데이터 유출에 대한 피해가 있을 수 있지만 

서명 필드는 헤더와 페이로드를 통해 만들어지기 때문에 데이터 변조 후 재전송하는 것을 막을 수 있다.

그럼에도 불구하고 쿠키와 세션을 이용한 인증에 비해 장점이 많아 많은 서비스에서 이 인증 방식을 사용하고 있다.

 

 

JWT 인증토큰, Bearer 토큰에 관하여.. for Node Express. — 개발이 하고 싶어요 (tistory.com)

 

JWT 인증토큰, Bearer 토큰에 관하여.. for Node Express.

JWT 인증토큰, Bearer 토큰에 관하여.. for Node Express. JWT 란, JWT(Json Web Token)은 클라이언트와 서버 혹은 서비스 간의 통신시 정보를 JSON 객체를 통해 안전하게 전송하고 권한(Authorization)을 위해 사용하

iu-corner.tistory.com

장점

  • 헤더와 페이로드를 가지고 서명 필드를 생성하므로 데이터 변조 후 재전송을 막을 수 있다.
  • stateless 서버를 만들 수 있다.
  • 모바일 어플리케이션에서도 잘 동작합니다.
  • 인증정보를 다른 웹서비스에 전송할 수 있다. (OAuth)

단점

  • 여전히 누구나 디코딩이 가능하므로 데이터 유출이 발생할 수 있다.
  • 토큰을 탈취당할 경우, 대처하기 어렵다. (유효기간을 기다리거나 token refresh를 해야한다)
  • JWT의 경우, 토큰의 길이가 길기 때문에 요청이 많아질수록 서버 자원의 낭비가 많다.

일반적으로 토큰의 요청 헤더의 Authorization 필드에 담아 보낸다.

 

Authorization: <type> <credentials>

 

우리가 궁금해하던 Bearer <type>에 해당

토큰에는 많은 종류가 있고 서버는 다양한 종류의 토큰을 처리하기 위해 전송받은 type에 따라 토큰을 다르게 처리합니다.

 

 

* Bearer Token

Bearer Token은 HTTP통신의 인증 방식에 Bearer Authentication을 사용하는 것이다.

Bearer Authentication이란, "이 토큰을 나르는(bearer) 사람에게 권한을 부여하시오"라는 것인데,

앞서 살펴본 Oauth 역시 사용자가 아닌 소비자가 중간에서 사용자의 권한을 일부 부여받게 된다.

Bearer Token은 JWT나 Oauth에서 사용되는 토큰을 모두 통칭하는 용어이다.

 

그래서 베어러 왜 씀?

 

[Web] 토큰을 사용할 때 Bearer는 무엇인가? (tistory.com)

 

[Web] 토큰을 사용할 때 Bearer는 무엇인가?

들어가며 JWT를 인증 방법으로 활용하면서, 헤더 값으로 bearer + token 값을 받아서 사용했습니다. 이때 bearer가 무엇인지, 제대로 모르고 사용했습니다. 이번 기회에 토큰 값에 붙어있는 bearer가 무

overcome-the-limits.tistory.com

우린 베어러를 쓰기호 사회적 합의가 있었어요 라는데

Q : 그렇다면 Bearer (일반적인) <Token> 과 JWT 를 사용함에 다른 점은?
A :

<Token>

  • JWT가 나오기 이전에는 <Token>은 본질적으로 의미가 없는 문자열의 조합이었다
  • 해당 <Token>을 DB조회를 하여 맞는 권한 Claims 을 가져오는 방식으로 개발을 했었다
  • <Token>을 사용할 때마다 DB 혹은 그에 알맞는 저장소 (Persistence layer) 가 필요하다는  것이다

JWT

  • JWT는 자체적으로 Claims를 인코딩하고 서명(signing)을 통해 확인 (verify) 할 수 있다
  • 상태를 저장하지 않음 (stateless) 으로 DB 혹은 저장소 (Persistence Layer)가 필요 없다는 소리다
  • JWT만으로도 많은 것들을 확인 가능하여, 해당 Application 에서 인증 관련 프로세스의 간소화가 가능하다 (DB 로드가 줄어들기 때문에)
  • JWT를 발행(publish)하는 서비스만 refresh token 발행으로 인한 DB/Persistence Layer 에 대한 대비를 할 필요가 있다 (refresh token 저장은 해야하니)
 

토큰 기반 인증 Bearer Authentication (ssemi.net)

 

토큰 기반 인증 Bearer Authentication

OAuth를 들어가려고 생각하다가, 이전에 Bearer scheme 부터 조져야 겠다는 생각을 먼저 해봤다 블로그에 글을 쓸 때 마다 드는 생각Bearer scheme 에 대해서 정확히 설명을 하기 위해서 여러 자료들을 봤

www.ssemi.net

 

 

자세한 사항은 다음에

워낙 플잭 후기에 다 써서 할말이 없다

 

숙제- 테스트 코드 짜보기

         토큰 이외의 로그인 기능 짜오기

         정보수정시 기존 정보 불러오기 기능 만들기

 

다 어렵네

 

할 것: 타입 스크립트 끝내기, nest 진도 빼기

 

다 할 거 밖에 없다   

'내배캠 TIL WIL > 내배캠 wil' 카테고리의 다른 글

내배캠wil 13주차  (0) 2023.02.20
내배캠wil 11주차  (0) 2023.02.06
내배캠 til 56일차 gptChat 체험  (0) 2023.02.02
내배캠wil 10주차  (0) 2023.01.30
wil 9주차 설 연휴의 개발  (0) 2023.01.25

API 와 Endpoint ? (둘 다 정확히.. : 네이버블로그 (naver.com)

 

API 와 Endpoint ? (둘 다 정확히 알고 있다면 안 봐도 되는 글)

API 와 Endpoint의 차이점? 둘 다 정확히 알고 있다면 안 봐도 되는 글. API 와 Endpoint의 차이 ...

blog.naver.com

 

개발 배우면서 좋은 게시글은 저장을 많이 했는데 정리를 해야하겠더라

 

 

우선 그나마 잘 아는 API부터

 

  내가 인식한  API

 

  웹서버-백엔드 하면서 느낀 기능의 총칭

프로그램 안의 프로그램,  실질적으로는 기능을 라우터,기능이라고 그냥 쓰지만 명세서 적을 때

api라고 쓰니까 api

 

 REST API개념은 있지만 그건 특정 스타일로 짜는 것

관리가 용이하고 (기능별로 가닥가닥 갈라놔서 그거만 고침), 기존 소프트웨어를 결합 (들고오기 쉬워서)

하기 용이하다. 물론 유지보수도 동일한 맥락.

 

 실재 api

API란 무엇인가요? - API 초보자를 위한 가이드 - AWS (amazon.com)

 

API란 무엇인가요? - API 초보자를 위한 가이드 - AWS

GraphQL은 API용으로 특별히 개발된 쿼리 언어로서, 클라이언트에게 요청한 데이터만 제공하는 것을 우선으로 합니다. 또한 API를 빠르고 유연하며 개발자 친화적으로 만들도록 설계되었습니다. RES

aws.amazon.com

 

API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.

 

  API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다.

API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다.

인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여

두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는

방법에 대한 정보가 들어 있습니다.

 

막상 내용 보면 뭔가 많이 다름

남의 전공서적 보는 느낌이

 

 

 

엔드포인트

 

 

 

 내가 아는 엔드포인트코드 짤때 오류나서 어디서 오류나는지 vs코드에서 방점 찍어 거기서 쫑 내는 것

 커뮤니케이션 채널의 한 쪽 끝 이라고만 기억함

 

https://www.cloudflare.com/ko-kr/learning/security/api/what-is-api-endpoint/

 

API 엔드포인트는 API 호출을 수신하는 API 연결의 끝을 말합니다.

API(응용 프로그램 프로그래밍 인터페이스)는 하나의 응용 프로그램이 다른 응용 프로그램에 서비스를 요청하는

방식입니다. 개발자는 API를 통해 이미 존재하는 응용 프로그램 기능을 다시 빌드하지 않아도 됩니다.

API 엔드포인트는 이러한 요청(API 호출)이 수행되는 곳입니다.

 

 

진짜 오래 찾았다

 

설명이 많은데 내가 알아먹을 말이 적었다

 

 

 

 

빠른 결론

 

 

 

 

 

1.1 NestJS 소개 - NestJS로 배우는 백엔드 프로그래밍 (wikidocs.net)

 

1.1 NestJS 소개

NestJS는 Node.js에 기반을 둔 웹 API 프레임워크로써 Express 또는 Fastify 프레임워크를 래핑하여 동작합니다. 기본으로 설치하면 Express를 사용합니다…

wikidocs.net

소개 - 쉽게 풀어 쓴 Nest.js (wisewiredbooks.com)

 

소개 - 쉽게 풀어 쓴 Nest.js

이 문서는 Nest.js의 공식문서를 바탕으로 작성했습니다. 따라서 이 문서는 전반적인 흐름은 공식 문서와 비슷하며 설명도 많은 부분이 공식 문서를 바탕으로 합니다. 다만 공식 문서 자체가 초보

www.wisewiredbooks.com

NestJS는 Node.js에 기반을 둔 웹 API 프레임워크로써 Express 또는 Fastify 프레임워크를 래핑하여 동작합니다. 기본으로 설치하면 Express를 사용합니다. Node.js는 손쉽게 사용할 수 있고 뛰어난 확장성을 가지고 있지만, 과도한 유연함으로 인해 SW의 품질이 일정하지 않고 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 합니다. 이에 반해 NestJS는 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있습니다. 그러면서도 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점은 그대로 가지고 있습니다. NestJS는 Angular로부터 영향을 많이 받았습니다. 모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성을 높여줍니다. IoC(Inversion of Control, 제어역전), DI(Dependency Injection, 의존성 주입), AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)와 같은 객체지향 개념을 도입하였습니다. 프로그래밍 언어는 타입스크립트를 기본으로 채택하고 있어 타입스크립트가 가진 타입시스템의 장점을 누릴 수 있습니다.

 

ㄴ node.js 에 규율을 더해 피로를 줄이고 장점을 줄였다. 그럼에도 장점은 살렸다

     express,fastify를 지원하고

      

 대부분의 Nest의 코드는 타입스크립트로 만들어졌으며 타입스크립트를 완전하게 지원합니다. 하지만 Nest는 Express와 동급은 아닙니다. Nest는 HTTP 요청을 다루는 웹서버로 내부적으로 Express를 사용하고 있습니다. 즉 Nest는 Express 위에서 돌아가는 레이어에 불과합니다.

 

ㄴ타임스크립트 못하면 힘들다

 

 

NestJS는 국내에서도 점점 인기를 얻고 있고 모두싸인과 당근마켓 등 여러 회사에서 적용되어 사용자가 늘고 있습니다. 이 책을 통해 NestJS의 핵심 기능과 원리를 쉽게 배우고 더 나은 웹 개발 환경을 구축할 수 있는 방법을 소개하고자 합니다. 백엔드 개발을 처음 접하는 사람도 쉽게 따라하면서 백엔드에 필요한 기술들을 습득할 수 있도록 하였습니다.

 

ㄴ 이거 알기 전에는 타입스크립트가 가장 시대적인 언어였는데 어째...

+ Recent posts