목록인증 (4)
IT 개발노트
OpenID Connect(OIDC)는 권한허가 프로토콜인 OAuth 2.0 기술을 이용하여 만들어진 인증 레이어다. (OpenID Connect is an authentication layer on top of OAuth 2.0, an authorization framework.) JSON 포맷을 이용한 RESTful API 형식을 사용하여 인증한다. OpenID Connect를 이용하면 손쉽게 외부 서비스를 통하여 사용자 인증을 구현할 수 있다. OpenId Connect와 Oauth 2.0의 차이 OAuth는 권한허가를 처리하기 위해 만들어진 표준 프로토콜이다. Google, Facebook, Twitter 등에서 자신의 서비스를 외부 시스템에서 사용할 수 있게 제공해주기 위해서 생겨난 기술로 O..
내가 어떠한 서비스를 사용자에게 제공한다고 가정하자. 그렇다면 스스로 애플리케이션 서버를 구축 및 로그인 및 회원가입 서비스를 구현하기위해 사용자로부터 개인정보를 받아 저장하고 관리해야 할 것이다. 하지만 OAuth 2.0을 사용한다면 대부분의 로그인, 개인정보 관리 책임을 서드파티 애플리케이션 (Google, Facebook, Kakao 등)에게 위임할 수 있다. (단, 사용자가 기존에 서드파티 서비스에 회원가입이 되어있어야 함) 더 추상적으로 생각해보면 하나의 A라는 애플리케이션만 가입한다면 다양한 애플리케이션에서 각각 사용자가 권한을 부여 받을 필요 없이 A 애플리케이션으로 부터 부여 받은 권한을 다양한 애플리케이션에서 행사 할 수 있다. 예시로는 내가 만든 애플리케이션에서 사용자가 Kakao 로그..
JWT의 개념 JWT(JSON Web Token)은 토큰 기반 인증에서 사용하는 대표적인 토큰이다. JWT는 총 세 부분으로 이뤄져 있다. 헤더(Header), 페이로드(Payload), 서명(Signature)이 바로 그것이다. 각 부분을 Base64로 인코딩하고 이들을 마침표(.)를 이용하여 차례대로 연결하면 그것이 곧 JWT이다. 다음 그림에서 빨간색 부분이 헤더, 보라색 부분이 페이로드, 하늘색 부분이 서명이다. 1. 헤더 (Header) 헤더는 총 두 가지 정보를 갖는 JSON 값이다. 하나는 토큰의 타입을 지정하는 type, 다른 하나는 서명 계산 및 토큰 검증에 사용할 암호화 알고리즘을 지정하는 alg이다. JWT의 경우에는 type이 무조건 'JWT'이고, alg는 HS256(SHA256)..
1. 세션 기반 인증 세션 기반 인증에서는 로그인한 사용자의 상태 정보를 서버 단의 저장소에 세션의 형태로 저장한다. 그리고 클라이언트가 세션 ID를 쿠키로 서버에 전송하면, 서버는 해당 세션 ID를 이용하여 적절한 세션을 탐색함으로써 해당 사용자가 이미 로그인을 한 상태인지, 그렇다면 요청된 기능을 사용할 권한이 있는지 검증한다. 이것이 곧 인가 과정이다. 1-1. 세션 기반 인증의 장점 세션 기반 인증의 가장 큰 장점은 로그인한 사용자의 상태 정보를 서버 단에 저장하기에 상대적으로 안전하다는 것이다. 보안은 서버가 클라이언트보다 튼튼하기 때문이다. 또한, 로그인한 사용자의 상태 정보를 서버 단에서 유연하게 관리 가능하다. 만약 누군가의 세션 ID가 탈취되었다면, 서버는 해당 세션을 폭파시키기만 하면 ..