JWS 를 소개하겠습니다.


JOSE (JSON Object Signining and Encryption) 의 아래에 있는 Spec 중 하나로 OAuth 의 근간이 된 기술이라고 한다.



아래는 JOSE 에 속한 기술들. 이 외에도 좀 더 있다.


JWT (JSON Web Token) : JWS or JWE

JWS (JSON Web Signature) : 서버에서 인증을 증거로 인증 정보를 서버의 private key 로 서명한 것을 Token 화 한것.

JWE (JSON Web Encryption) : 서버와 클라이언트 간 암호화된 데이터를 Token 화 한것.

JWK (JSON Web Key) : JWE 에서 payload encryption 에 쓰인 키를 token 화 한것. (물론, 키 자체도 암호화되어 있죠.)



JWS 구조는 header, payload, signature 로 나뉘며 header 와 payload 는 JSON Object 로 되어있고 signature 는 이 둘을 서명한 것이다.

각각에 대해 Base64  를 하고 . 으로 구분하면 이것이 바로 JWT 가 된다.


예를 들어보자

header 원본: 

{

  "alg": "HS256",

  "typ": "JWT"

}


payload  원본:

{

  "sub": "1234567890",

  "name": "John Doe",

  "admin": true

}


JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ


Base64(header) = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Base64(payload) = eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

Base64(signature) = TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ



서명에 쓰인 키는 Token 을 생성하는 자 (주로 인증 서버) 의 private key 이다.

이는 내부적으로 생성하여 가지고 있으면 된다.



자, 그럼 JWS 를 이용하여 인증을 하는 매커니즘을 살펴보자.

1. 클라이언트 A 가 로그인

2. 서버에서는 payload 에 넣고 싶은 내용을 담은 후 (로그인한 사람의 정보, 접근 권한 등) 서명하고 Token 발행

3. 클라이언트는 다음 통신에서 항상 Token 을 함께 전달

4. 서버에서는 주요 통신에서 Token 을 확인. 내가 서명한 것이 맞는지 서명에 대한 validation 수행

5. 내가 한 서명이 맞고 인증 정보를 확인한 후 적절히 행동.

How does a JSON Web Token works


payload 는 제약이 없다.

하지만 header 의 경우 pre defined key 가 있기 때문에 이를 제외하고 추가할 내용이 있다면 추가하면 된다.



아래는 참고 사이트

JOSE http://jose.readthedocs.io/en/latest/

JOSE Documents https://datatracker.ietf.org/wg/jose/documents/ 

AuthO https://auth0.com/learn/json-web-tokens/

JWT https://jwt.io/

Visual studio code는 Microsoft에서 배포한 IDE입니다. (#)

공식 홈페이지에서 Free. Open source. Runs everywhere. 라고 특징을 소개하고 있습니다.

개인적으로는 Light라는 키워드를 추가해도 좋을 것 같습니다. :-D



일전에 Eddy와 Julian께서 eletron을 review할 때 소개되었던 툴이기도 하죠. (electron으로 개발된 툴입니다.)



최근 ionic2 검증을 시작하면서 Visual studio code를 본격적으로 사용하고 있는데요.

아직 걸음마 단계라 이런 저런 강좌를 많이 찾아서 보면서 다양한 시도를 해 보고 있습니다.


그러던 중, signature pad를 접목하는 youtube샘플을 찾았는데, 그 강좌를 보다가 재미있는 것을 발견했습니다.

youtuber가 사용하는 Visual studio code가 제 것과는 많이 달랐습니다.


그의 file tree는 매우 화려했습니다. 각각의 폴더 및 파일의 좌측에 형형색색의 icon이 붙어 있었습니다.


그래서 찾아보기 시작했습니다.

어떻게 하면 (Visual studio code를 꾸밀 수 있는가) file tree에 icon을 추가할 수 있는가를 말이죠.

방법은 간단합니다.



기본 look, 깔끔 그 자체입니다.


파일 > 기본 설정 > 파일 아이콘 테마 메뉴로 이동합니다.


dropdown list에서 아이콘 테마를 추가로 설치하던가 기설치된 항목 중 하나를 선택하여 적용합니다.


이로써 file tree에 예쁜 icon이 적용되었습니다. (theme name: File icons (#))



기본 설정에서 icon 출력을 지원하지 않았던 것은 아마도 light한 tool을 개발하겠다는 방향성에 기반한 것으로 보입니다.

Visual studio code blog의 내용 중에 file tree에 icon을 출력하는 것이 무겁고, 반면 큰 가치는 느낄 수 없을 것이라고 생각했다는 얘기가 있네요. (#)


References

https://code.visualstudio.com/

https://code.visualstudio.com/blogs/2016/09/08/icon-themes

https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons



'Tech. Etc' 카테고리의 다른 글

KEMP.Zipper 개발 회고  (0) 2017.07.17
개발시 크롬에서 Cross Domain이슈 회피 방법  (0) 2017.05.26
JWS 소개  (4) 2017.05.22

오늘 오후 회의 때 나온 얘기 중에  더 나은 업무 환경, 업무 내용 공유 등등을 하기 위해서 원인 파악을 먼저 해보려고 합니다. 


우리에게 걸림돌이.. 문제가 되는 부분을 먼저 나열 해 보려고 합니다. 


댓글로 달아주세요~



+ Recent posts