목록Authentication (4)
개발일지
OAuth(Open Authorization)란?"자신이 소유한 리소스에 다른 소프트웨어 애플리케이션이 접근할 수 있도록 허용해 줌으로써 접근 권한을 위임해주는 개방형 표준 프로토콜" . 우리가 흔히 사용하는 구글, 카카오 간편 로그인 기능도 OAuth2.0 프로토콜을 기반으로 한다. 탄생 배경OAuth 이전에도 사용자의 아이디와 패스워드가 노출되지 않도록 하면서 API 접근 위임이 가능한 인증 방법이 존재했다. 구글과 야후, 아마존 등에서 각각의 인증 방식을 제작하여 사용했다. 그러던 도중 트위터 개발자와 Gnolia의 개발자가 만나 표준안에 대한 논의를 거쳤고 마침내 OAuth 등장, 2010년에는 OAuth 1.0 표준안인 (RFC5849) 가 발표되었다. 현재에는 OAuth2.0가..
JWT 문제점Weak algorithmsJWT는 여러 알고리즘을 제공하는데 그 중에는 보안에 취약한 알고리즘도 포함된다.Trivial Forgery어떻게 구현하냐에 따라 위조가 쉬운 토큰을 양산할 수 있다.JWT는 토큰 헤더에 서명 알고리즘을 포함한다.공격자가 alg 헤더에 None을 지정하면 인증을 우회할 수 있다. 또는 서버가 비대칭 알고리즘을 쓴다는 것을 알면서도 대칭키 알고리즘(ex.HS256)으로 변경하여 요청할 수 있다. 예시) 서버의 RSA 공개 키는 공개적으로 알려져있다. 해커는 alg 헤더를 HS256 대칭 키 알고리즘으로 설정한 후, 공개키로 가짜 토큰을 생성한다. 서버 측에서는 alg 헤더에 명시된 대로 HS256 알고리즘과 서버의 공개키로 인증 요..
JWT(Json Web Token)지난 포스트에서 토큰 기반 인증 시스템에 대해 알아보았다. 이번 포스트에서는 토큰 기반 인증 시스템의 구현체인 JWT(Json Web Token)에 대해 알아보고자 한다. JWT란?JSON Web Token(JWT)은 웹 표준(RFC 7519)으로서 두 개체 간에 정보를 안전하고 간결하게 전송하기 위한 방법을 정의한다. Json 포맷을 사용하여 자가수용적(self-contained) 방식으로 사용자 정보를 저장한다. JWT는 다음과 같은 특성을 가진다.웹 표준으로서 C, Jave, Python, JavaScript 등 대부분의 주류 프로그래밍 언어에서 지원된다.자가수용적 (self-contained)이다. JWT는 토큰 정보, 전달할 정보, 검증됐..
토큰 (Token)인증을 위해 사용되는 암호화 된 문자열 토큰 기반 인증 방식사용자가 로그인을 요청하면 서버에서는 어떠한 데이터를 기반으로 인증 가능한 토큰을 생성해 클라이언트에 전달한다. 클라이언트는 요청 시 토큰과 함께 요청하고 서버는 토큰에 대한 유효성을 검사하여 사용자의 인증 여부를 판별한다.토큰 방식은 토큰의 유효성 검증과 유저의 인증을 별도로 분리할 수도 있다. 예를 들어 구글 로그인을 하면 구글 유저 인증 서버에 접근할 수 있는 토큰을 발급해준다. 이 토큰을 다시 구글 유저 인증 서버로 보내 사용자를 인증할 수 있다.jwt는 토큰 유효성을 확인하기 위한 별도의 서버를 거치지 않고도 jwt 토큰 자체를 해석하여 유저를 검증할 수 있도록 한다. 동작 방식사용자..