전체 글 썸네일형 리스트형 [Spring Security][JWT 로그인 인증 구현] 사용자의 Username(이메일주소)과 Password로 로그인 인증에 성공하면 로그인 인증에 성공한 사용자에게 JWT를 생성 및 발급한다 사용자의 로그인 인증 성공 후, JWT가 클라이언트에게 전달되는 과정은 다음과 같다 1.클라이언트가 서버 측에 로그인 인증 요청(Username/Password를 서버 측에 전송) 2.로그인 인증을 담당하는 Security Filter(JwtAuthenticationFilter)가 클라이언트의 로그인 인증 정보 수신 3.Security Filter가 수신한 로그인 인증 정보를 AuthenticationManager에게 전달해 인증 처리르 위임 4.AuthenticationManager가 Custom UserDetailsService(MemberDetailsServic.. 더보기 [Spring Security] [JWT 장단점] JWT를 통한 인증의 장점 상태를 유지하지 않고(Stateless),확장에 용이한(Scalable) 애플리케이션을 구현하기 용이하다 서버는 클라이언트에 대한 정보를 저장할 필요가 없다 (토큰이 정상적으로 검증되는지만 판단한다) 클라이언트는 request를 전송할 때 마다 토큰을 헤더에 포함시키면 된다 - 여러대의 서버를 이용한 서비스라면 하나의 토큰으로 여러 서버에서 인증이 가능하기 때문에 JWT를 사용하는 것이 효과적이다(만약 세션 방식이면 모든 서버가 해당 사용자의 세션 정보를 공유하고 있어야한다) 클라이언트가 request를 전송할 때마다 자격 증명 정보를 전송할 필요가 없다 HTTP Basic같은 인증 방식은 request를 전송할 때 마다 자격 증명 정보를 포함해야하지만 JWT의 경우 토큰이 만.. 더보기 [Spring Security][JWT] JWT(JSON Web Token)란? JWT는 데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식으로써 토큰 인증 방식에서 가장 범용적으로 사용되며 JSON 포맷의 토큰 정보를 인코딩 후, 인코딩 된 토큰 정보를 Secret Key로 서명한 메시지를 Web Token으로써 인증 과정에 사용한다 JWT의 종류 1.엑세스 토큰 2. 리프레시 토큰 Access Token은 보호된 정보들(사용자의 이메일, 연락처, 사진 등)에 접근할 수 있는 권한 부여에 사용한다 클라이언트가 처음 인증을 받게 될 때(로그인 시),Access Token과 Refresh Token 두 가지를 다 받지만 실제로 권한을 얻는 데 사용하는 토큰은 Access Token이다. 권한을 부여 받는데엔 Access Tok.. 더보기 [Spring Security] [세션/토큰 방식] 토큰인증 기반을 쓰는이유 세션기반인증은 서버 혹은DB에 유저 정보를 담는 방식 > 서버에 부하가 발생함 대표적인 토큰 기반 방식 > JWT (Json Web Token) 토큰은 유저 정보를 암호화한 상태로 담을 수 있고, 암호화 했기 때문에 클라이언트에 담을 수 있다. 토큰 기반 자격 증명 HTTP 프로토콜은 Request를 전송한 후 Response를 수신하게 되면 연결을 끊는 비연결성(Connectionless)의 특성을 가지고 있고 또한 Request와 Response에 대한 상태를 저장하지 않는 비상태성(Stateless)의 특성을 가지고 있기 때문에 로그인 인증을 성공적으로 수행되었다 하더라도 서버측에서는 매번 Request를 수신할 때마다 이 Request가 인증된 사용자가 보낸 Request.. 더보기 [Spring Security][인증 컴포넌트] UsernamePasswordAuthenticationFilter 사용자의 로그인 request를 제일 먼저 만나는 컴포넌트는 Spring Security Filter Chain의 UsernamePasswordAuthenticatonFilter이다. UsernamePasswordAuthenticationFilter는 일반적으로 로그인 폼에서 제출되는 Username과 Password를 통한 인증을 처리하는 Filter이다 UsernamePasswordAuthenticationFilter는 클라이언트로부터 전달받은 Username과 Password를 Spring Security가 인증 프로세스에서 이용할 수 있도록 UsernamePasswordAuthenticationToken을 생성한다. public c.. 더보기 [Spring Security][인증 구성요소 이해] Spring Security에서는 Spring Security Filter Chain을 통해 보안을 위한 특정 작업을 처리한다. Spring Security의 컴포넌트로 보는 인증(Authentication) 처리 흐름 사용자가 로그인 인증을 위한 요청을 전송할 경우, Spring Security에서 해당 인증 요청을 어떻게 처리하는지를 한눈에 볼 수 있는 Spring Security의 핵심 컴포넌트로 구성된 인증처리 흐름이다. 사용자가 로그인 폼등을 이용해 UserName(로그인ID)과 Password를 포함한 request를 Spring Security가 적용된 애플리케이션에 전송한다 사용자의 로그인 요청이 Spring Securitydml Filter Chain까지 들어오면 여러 Filter들 중에.. 더보기 [Spring Security][Web요청 처리 흐름] 보안이 적용된 웹 요청의 일반적인 처리 흐름 Spring Security의 웹 요청처리를 이해하기 위해서 알아뒤어야할 부분은 보안이 적용된 웹 요청의 일반적인 흐름이다. 사용자가 보호된 리소스를 요청한다 인증 관리자 역할을 하는 컴포넌트가 사용자의 크리덴셜을 요청한다 사용자의 크리덴셜이란 해당 사용자를 증명하기 위한 구체적인 수단을 의미한다 일반적으로는 사용자의 패스워드가 크리덴셜에 해당한다. 사용자는 인증 관리자에게 크리덴셜을 제공한다 인증관리자는 크리덴셜 저장소에 사용자의 크리덴셜을 조회한다 인증관리자는 사용자가 제공한 크리덴셜과 크리덴셜 저장소에 저장된 크리덴셜을 비교해 검증 작업을 수행한다 유효한 크리덴셜이 아니면 Exception을 throw한다 유효한 크리덴셜이라면, 에서 접근 결정 관리자 역.. 더보기 [인증/보안][SQL Injection][CSRF] SQL Injection이란 ? SQL Injection (SQL 삽입)은 웹 해킹을 접한다면 가장 먼저 배우는 공격 기법인 만큼 간단하지만 아주 강력한 공격이다 이름처럼 데이터베이스에서 임의의 SQL문을 실행할 수 있도록 명령어를 삽입하는 공격 유형이다. 응용프로그램의 보안상의 허점을 이용해 데이터베이스를 비정상적으로 조작하며, 이로 인해 기록이 삭제되거나 데이터가 유출될 수 있다. 1.SQL 삽입 공격은 보통 사용자가 input form에 직접 무언가 작성하는 상황에서 발생한다. 예를 들어 로그인을 한다면 웹사이트에 로그인할 대 입력한 아이디 값과 패스워드 값을 이용해 바로 데이터베이스에 접근한다 만약 클라이언트가 kimkoding이라는 아이디 값을 보낸다면 대략적인 코드는 다음과 같을 것이다 SEL.. 더보기 이전 1 2 3 4 ··· 12 다음