OpenID Connect 사용자 인증을 위한 기술이다. 내가 인증을 직접 구현하는 것이 아닌 구글, 페이스북, 트위터 같은 대규모 웹 사이트에 사용자의 인증 절차를 위임할 수 있는 기술이다. 이렇게 하면 사용자들은 웹사이트마다 ID를 만들고 인증을 하는 것이 아닌, 자신이 신뢰하는 대규모 사이트 (OpenID Provider라고 함, 구글, 트위터, 페이스북 등) 에서 제공하는 OpenID 인증 서비스 하나만으로 나를 인증할 수 있게 된다. OpenID는 비영리기관인 OpenID Foundation에서 추진하는 개방형 표준 및 분산 인증 프로토콜이다. 즉 OpenID는 인증을 위해 등장했다. OAuth2.0 프로토콜의 최상위 레이어와 동일한 레이어이다. OpenID Connect는 OAuth 2.0을 ..
CSRF Cross Site Request Forgery 사이트 간 요청 위조 웹 사이트의 취약점 공격 방법 중 하나이다. (서버에 직접적인 공격 X) 공격자는 사용자가 로그인한 상태에서 악의적인 웹페이지를 방문하게 만들어, 웹 페이지에서 사용자의 권한을 도용하여 서버에 악의적인 요청을 보낼 수 있다. 예를 들어, 사용자가 인터넷 뱅킹에 로그인한 상태에서 자동으로 계좌에서 돈을 이체하는 요청을 보내는 식으로 공격을 한다. CSRF가 이루어지는 과정 사용자가 은행 사이트에 로그인을 한 상태이다 사용자가 피싱사이트에 접속한다(피싱메일이나, 팝업 광고를 통해) 공격자는 피싱사이트에 접속한 사용자로 가장하여 은행에 이체 요청을 전송한다. 사용자는 이체 요청을 한 적 없지만 이체가 실행된다 CSRF 대응 방법 1..
OAuth란? Open Authorization 위임 권한부여를 위한 표준 프로토콜이다. 인증과 권한부여를 동시에 제공한다. OAuth는 어플리케이션이 사용자의 패스워드 없이 사용자의 데이터에 접근 가능하도록 허가해준다. 구글, 페이스북, 트위터와 같은 다양한 플랫폼의 특정한 사용자 데이터에 접근하기 위해 제 3자 클라이언트가 사용자 인증을 통해 사용자의 접근 권한을 위임 받을 수 있는 방식을 제공한다. 단순히 OAuth 1.0a의 차기버전이 아닌, 상황에 따른 다양한 인증 방식을 시나리오별로 제시한다. HTTPS(HTTP+SSL)을 필수로 강제하고, 토큰을 HTTP Header에 숨기는 방식을 사용한다. OAuth2.0 장점 대형 서비스로의 확장성을 지원한다. 자원 서버와 인증 서버를 분리하여 각각의 ..
Spring은 공통적으로 작업을 처리함으로써 중복된 코드를 제거할 수 있는 기능을 제공한다. Spring에서 사용되는 이 기능들은 모두 어떤 행동을 하기 전에 먼저 실행하거나, 실행 한 후에 추가적인 행동을 할 때 사용되는 기능들이다. Filter Interceptor AOP (Aspect Oriendted Programmig, 관점 지향 프로그래밍) 1. Filter 요청과 응답을 거른 뒤 정제하는 역할을 한다. Dispatcher Servlet에 요청이 전달되기 전, Dispatcher Servlet을 떠난 직후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공한다. 스프링 컨텍스트가 아닌, 톰캣과 같은 웹 컨텍스트에 의해 관리되는 것이고, 스프링 밖에서 처리되는 것 (..
1. 인증이란? 유저가 누구인지 확인하는 절차 예를 들어 ID와 PW를 통해 로그인하는 행위 2. 인가란? 인증 이후의 프로세스 사용자가 어떤 자원에 접근할 수 있는지 확인하는 절차 3. 인증과 인가를 처리하는 방법 Token 다양한 Token이 있지만 가장 많이 사용되는 Token은 "JWT"이다. JWT의 구성요소 Header: Token 유형, 서명 알고리즘(HS256 or RSA등)이 담긴다. Payload: Claim이 포함되는 영역으로 전송하고자 하는 여러 데이터가 담긴다(Claim 유형: Registered/Public/Private) Signature: Base64로 인코딩된 Header, Payload와 서버만이 가지고 있는 비밀 키를 설정한 알고리즘으로 암호화 값이 담긴다. 각 영역들은..
서블릿 Servlet이란? 서블릿이란 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 클라이언트가 어떤 요청을 하면 서버 쪽에서 그 결과를 제공해주는 자바 클래스이다. 예를 들어 로그인 페이지에서 아이디와 패스워드를 입력하고 로그인 버튼을 누르면, 서버에서 아이디와 패스워드를 확인하여 다음 페이지를 띄워주어야하는데, 이런 역할을 수행하는 프로그램이 서블릿이다. Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술이다. 웹을 만들 때는 다양한 요청과 응답이 있다. 이때 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술이다. 서블릿 특징 일반 자바 프로그램과 다르게 독자적으로 실행되지 못하고 서블릿 컨테이너에서 실행된다. 클라이언..