D+27

  1. OAuth와 Auth의 차이

  2. firebase의 auth과정

  3. firebase는 oauth server가 가능한가



OAuth와 Auth의 차이?

  • 간단하게 말하자면 액세스 토큰을 사용하느냐, 사용하지 않느냐의 차이

  • Authentication(auth) : ‘누구인지’에 대한 정보를 다룬다. 최종 사용자 주체를 결정하는 프로세스이다. 주체를 결정하는 데에는 ID, 비밀번호, 홍채 인식 등 여러가지 방법이 있다.

  • Authorization(OAuth) : ‘누구에게 권한을 부여했는지’에 대한 정보를 다룬다. 요청한 권한과 권한을 요청한 client 응용 프로그램을 연결하는 프로세스이다. 액세스 토큰은 연결을 나타낸다.

openID란

하나의 URI로 인터넷 상에서 식별이 가능하게 해 준다. 하나의 아이디로 여러 인터넷 사이트를 이용할 수 있는 인증 서비스를 말한다. openID를 만들면 openID지원하는 다른 웹 사이트에서 쉽고 편리하게 로그인 할 수 있다. openID를 사용하면 새비밀번호를 만들 필요가 없다. ID를 공유함으로써 신원을 확인할 수 있다.

JWT란

JSON Web Token의 약자로 토큰 기반 인증하는 웹표준이다.  stateless하다.

① stateful 서버 : 클라이언트로부터 요청을 서버가 받을 때, client에서 상태유지를 해야한다.

stateless 서버 : 상태유지가 되지 않으며, 상태정보를 저장하지 않으면 클라이언트로 들어오는 요청만으로 작업 처리한다. 상태가 없는 경우 client와 server의 연결고리가 없기 때문에 서버의 확장성이 높아진다.

  • 새로운 회원이 가입할 때 ①일경우 server의 서버나 세션에 새로 저장을 해야 하기 때문에 용량이 점점 늘어난다. RAM이 과부하가 될 수 있다.


JWT는 헤더(header).내용(payload).서명(signature) .을 기준으로 세 가지 문자열로 이루어져 있다.

  1. 헤더 header

    1. typ : 토큰의 두 가지 타입을 지정한다. 여기서는 JWT이다.

    2. alg : 해싱 알고리즘을 지정한다.

    3. 예시 : const header = { “alg” : “HS256”, “typ” : “JWT” } 형식으로 인코딩한다.

  2. 정보 payload

    1. 토큰에 담을 정보를 나타낸다. 정보의 ‘한 조각’을 claim이라고 한다.

      1. 등록된(registered) 클래임 : iss,sub,aud,exp,nbf,iat 등

      2. 공개(public) 클래임 : 충격이 방지된 이름을 가져야 한다. 중복 될 수 없다. uri형식으로 이름을 짓는다.

      3. 비공개(private) 클래임 : 양 측(client, server)간의 협의하에 사용되는 것을 나타낸다. 이름간 충돌이 되어도 상관없다.

  3. 서명 signature

    1. 헤더의 인코딩 값과 정보의 인코딩 값을 합친 후 주어진 비밀 키로 해시하여 생성한다.


* 토큰은 삭제가 불가능하기 때문에 만료시간을 넣어주는 것이 좋다.

'동계현장실습' 카테고리의 다른 글

19.02.14 목요일  (0) 2019.02.15
19.02.13 수요일  (0) 2019.02.13
19.02.11 월요일  (0) 2019.02.12
19.01.31 목요일  (0) 2019.01.31
19.01.30 수요일  (0) 2019.01.30

+ Recent posts