OAuth와 Auth의 차이
firebase의 auth과정
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) .을 기준으로 세 가지 문자열로 이루어져 있다.
헤더 header
typ : 토큰의 두 가지 타입을 지정한다. 여기서는 JWT이다.
alg : 해싱 알고리즘을 지정한다.
예시 : const header = { “alg” : “HS256”, “typ” : “JWT” } 형식으로 인코딩한다.
정보 payload
토큰에 담을 정보를 나타낸다. 정보의 ‘한 조각’을 claim이라고 한다.
등록된(registered) 클래임 : iss,sub,aud,exp,nbf,iat 등
공개(public) 클래임 : 충격이 방지된 이름을 가져야 한다. 중복 될 수 없다. uri형식으로 이름을 짓는다.
비공개(private) 클래임 : 양 측(client, server)간의 협의하에 사용되는 것을 나타낸다. 이름간 충돌이 되어도 상관없다.
서명 signature
헤더의 인코딩 값과 정보의 인코딩 값을 합친 후 주어진 비밀 키로 해시하여 생성한다.
* 토큰은 삭제가 불가능하기 때문에 만료시간을 넣어주는 것이 좋다.
'동계현장실습' 카테고리의 다른 글
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 |