토큰 기반 인증 간단 정리 Token based Authentication 기술 이야기 2018. 5. 2. 23:10

토큰을 사용하여 인증하는 방법에 대해서 간단하게 정리해 본다. 이미 정리된 내용이 많이 있는데, 그 정보들을 바탕으로 요점정리 해 둔 것이라고 보면 된다.


토큰 vs 세션

토큰과 세션의 차이를 설명하는 글이 엄청 많은데, Client가 고유 식별자를 갖고, 그 식별자를 바탕으로 인증을 처리한다는 점에서 두 기술은 같다. 세션이 식별자에 대한 정보를 서버에 저장한다고 하지만, 결국 식별자의 일부는 client에도 저장이 되어야 한다. 보통 cookie로 저장되는데, cookie에 모든 정보를 저장하는 더 낮은 보안수준의 방식과 비교하여 세션 방식은 주요 정보가 서버에 저장된다는 의미이니 오해하지 말자.

세션은 그 식별자가 http session에 한정된다는 점에서 토큰보다 제한된 범위의 활용성을 갖는다. 세부 구현 사항에 따라서 이야기가 조금씩 달라질 수 있지만, 큰 흐름에서 세션은 기존의 웹 서비스에서 http session을 기준으로 정보를 처리하는데 사용되었고, 토큰은 고유 식별자로 토큰을 만들어서 client에게 전달하는 방향으로 진화했기에 토큰만 전달된다면 다양한 포맷(JSON, XML등)의 구분없이, 상태와 상관없이(stateless) 폭넓게 사용될 수 있다. 토큰 기반의 방식이 활발하게 확산된 이유도 모바일 생태계에 맞는 인증 방법이 필요했기 때문이다.

OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조이다...OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다.OAuth 위키

그러므로, 새롭게 서비스를 계획 중이라면 당연히 토큰 기반으로 만들기를 권장한다.

JWT, OAuth

JWT(Json Web Token)과 OAuth는 RFC표준으로 등록되어 있는 토큰 기반 인증방식이다. OAuth는 이미 아주 널리 사용되고 있으며, JWT는 최근에 활발하게 이야기 거리가 되고 있는것 같은데, 장단점이 명확해서 적절한 곳에 사용되기 좋은 것 같다.

JWT의 장점이자 단점은 토큰 자체가 사용자 정보를 가지고 있다는 것이다. 어떤 정보를 갖을지 정할 수 있지만, 정보를 갖는 다는 것은 보다 효율적일 수도 있고, 보다 보안에 취약할 수도 있기 때문에 신중히 결정해야 할 것 같다. 그리고 정보를 갖게되면서, 토큰 자체가 사이즈가 매우 커지는데 이것도 부담이 만만치 않다.ㅋ

JWT를 테스트해봤다는 글은 많이 봤어도 JWT를 사용하고 있다는 사례는 많이 접하지는 못했다.

-> 구글 IoT Cloud에서 사용한다고 한다! 역시 트렌디한 구글.
Google Cloud Internet of Things Core, Using JSON Web Tokens (JWTs)

토큰 서버의 운영

토큰을 어떻게 만들지와 어디에다가 어떻게 저장해야 할까의 고민도 필요하다.

유추가 가능한 임의 스트링보다는 salting과 key stretching을 사용해서 토큰을 생성하는 것이 좋고, 개별 서버에서 암호화된 데이터를 저장하고 있는 것이 좋다. 하지만 보안이 강력할 수록 비용이 증가하므로, 상황에 맞게 적절하게 적용하는 것이 좋은데, 적당한 정도를 판단하는 것이 핵심이다!ㅋ

토큰 통안 인증과 권한 허가가 이루어지게 된다면 자연스럽게 성능 개선을 위해서 캐싱을 고려해야 한다. 거의 모든 요청에서 사용될 것이므로, 같은 사용자가 동일 시간에 집중적으로 사용하게 되며, 이런 상황에서 캐싱은 가장 먼저 고려되어야할 성능 개선 방법이다.

[node.js] Token 기반 인증

토큰 기반 인증 시스템

JWT(JSON Web Token)에 대해서...

토큰화(Tokenization) 기술이란

JWT를 구현하면서 마주치게 되는 고민들

안전한 패스워드 저장

댓글1

  • 불의남자 2021.09.04 13:04

    제2의 비트코인 꼭보세요!! (이제 올라갈듯 )

    2008년에 비트코인을 매일 50코인을 무료로 채굴할 수 있었습니다. 대부분의 사람들은 가치가 없다고 느꼈습니다. 지금 비트코인(Bitcoin)은 1코인당 6000만원 상당의 가치가 있습니다.

    2011년에 라이트코인이 선보였고, 매일 100코인을 무료로 채굴할 수 있었습니다. 대부분의 사람들은 이것이 여전히 가치가 없다고 생각했습니다. 라이트코인(Lite coin)은 현재 1코인에 30만원입니다.

    이더리움이 2015년에 나왔습니다. 매일 30코인을 무료로 채굴할 수 있었습니다. 대부분의 사람들은 여전히 그것을 믿지 않았습니다. 이제 이더이움(Ethereum)은 1코인당 300만원 상당의 가치가 있습니다.

    현재 전 세계적으로 돌풍을 일으키고 있는 상장을 준비중인 최고의 가치를 내재하고 있는 코인을 알려드립니다.

    **파이코인**

    파이코인은 2019년에 태어났고 몇 번의 반감기를 거쳐 지금 하루에 6코인정도를 무료로 채굴할 수 있습니다.

    다음 반감기 오기전 혹은 무료채굴 종료 전에 서두르셔야 합니다.

    비트코인의 단점을 보완하여 스마트폰으로 채굴 할수 있는 파이코인.

    스마트폰의 성능에 전혀 지장이 없으며, 하루 1번의 스위칭으로 24시간(1세션)동안 무료 채굴 합니다.

    이 황금같은 기회를 놓치지 마세요..!!

    파이(PI)는 스탠퍼드 박사들이 개발한 새로운 디지털 화폐이며 전 세계적으로 2300만 명 이상의 사용자가 존재합니다.
    파이를 받으시려면 앱스토어에 파이네트워크(pi network) 검색 설치 후 가입 시 저의 사용자 이름 firenews 누르시면 가입됩니다.

    http://minepi.com/firenews

    파이코인 이외에 2번째로 관심있는 코인인 비(bee)코인은 현재 1500만명이 넘고 올해 상장합니다.
    앱스토어에서 bee network 치고 다운로드받아 추천인 firenews1004 입니다.

    영국에서 나온 올해 9월 상장예정인 유망한 이글코인은 앱스토어에서 이글코인 치시고 다운받으셔서 추천인 firenews 입니다.

    싱가폴에서 나온 올해 상장예정인 전망 높은 ANT코인은 앱스토어에서 ANT NETWORK 치시고 다운 받아 추천인 firenews1004 입니다.
    답글