Back-End/Security

GitHub - da9dac/blank Contribute to da9dac/blank development by creating an account on GitHub. github.com 전체 코드는 해당 깃허브 레포지토리에서 볼 수 있습니다. 환경 설정 가장 많이 사용되는 OAuth2.0 서비스 제공업체인 구글, 카카오, 네이버를 이용한 인증을 구현하기 전에 yml / properties 파일에 설정을 추가해주겠다. 각 API 사용을 위한 사전 설정은 구글링 혹은 아래의 사이트를 참고하길 바란다. OAuth 2.0을 사용하여 Google API에 액세스하기 | Authorization | Google for Developers OAuth 2.0을 사용하여 Google API에 액세스하기 | Autho..
GitHub - da9dac/blank Contribute to da9dac/blank development by creating an account on GitHub. github.com 전체 코드는 해당 깃허브 레포지토리에서 볼 수 있습니다. 이번 게시글에서는 액세스 토큰과 리프래시 토큰 발급, 리프래시 토큰을 이용한 액세스 토큰 재발급, 액세스 토큰 검증 이렇게 3개의 필터를 구현하겠다. 로그인 처리 및 토큰 발급 필터 사용자의 로그인 요청을 받아 서버에 저장된 인증 정보와 일치하는지 판단하여 사용자의 로그인을 처리하고 성공 시 액세스 토큰과 리프래시 토큰을 발급하는 필터를 구현하겠다. public class JwtAuthenticationFilter extends UsernamePasswordAu..
GitHub - da9dac/blank Contribute to da9dac/blank development by creating an account on GitHub. github.com 전체 코드는 해당 깃허브 레포지토리에서 볼 수 있습니다. 이번에 프로젝트를 마무리하면서 사용했던 기술들을 정리해 보는 시간이 필요할 것 같아 스프링 시큐리티부터 정리해 보겠다. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt-ap..
Storage Mechanisms Username과 Password를 읽기 위해 제공되는 저장 기술들(UserDetailsService의 구현체)은 아래와 같다. In-Memory Authentication JDBC Authentication (JDBC를 사용하는 경우) UserDetailsService (커스텀 데이터 베이스를 사용하는 경우) LDAP Authentication (LDAP 저장소를 사용하는 경우) UserDetailsService 저장 기술들의 종류로 해당 인터페이스를 구현한 클래스들을 사용하여 UserDetails의 관리를 제공하고 인증을 할 수 있게 한다. (기본적으로 인메모리 방식과 JDBC 방식을 지원한다.) 이를 사용한 인증 방식은 Username과 Password를 사용하는 ..
Username/Password 가장 일반적으로 사용되는 인증 방식으로 아이디와 패스워드를 사용해 로그인하는 방식이라고 볼 수 있다. 스프링 시큐리티는 HttpServletRequest에서 Username과 Password를 읽기 위해 아래와 같은 방식을 지원한다. Form Basic Digest Form 우선 로그인하지 않은 사용자가 인증이 필요한 리소스에 요청한 경우 로그인 페이지로 리다이렉트 되는 과정을 먼저 살펴보겠다. 우선 인증되지 않은 사용자가 인증이 필요한 리소스에 요청을 보내면 AuthorizationFilter가 AccessDeniedException 예외를 던진다. 인증되지 않은 사용자이기 때문에 ExceptionTranslationFilter가 인증을 시작하고 Authenticatio..
SecurityContextHolder 스프링 시큐리티 인증 모델의 핵심으로 SecurityContext를 포함한다. Holder라는 단어의 의미를 생각해 보면 이해하기 쉬운데 여기서 Holder는 소유자, 보유자 같은 의미로 SecurityContext를 가지고 있는 존재라는 것이다. 위의 사진을 보면 SecurityContext는 인증과 관련된 정보들을 가지고 있는데 즉, SecurityContextHolder는 이러한 SecurityContext들을 저장하는 공간이다. //SecurityContextHolder에 저장할 SecurityContext를 하나 생성 SecurityContext context = SecurityContextHolder.createEmptyContext(); //Securi..
의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' } gradle 파일에 위의 스프링 시큐리티 의존성을 추가한 후에 별다른 설정 없이 서버를 실행한 후에 로컬 환경에서 사이트에 접속해보겠다. 접속해보면 로그인 페이지나 기능을 구현한 적이 없어도 스프링 시큐리티에서 기본적으로 제공해주는 인증 페이지로 접속되는걸 확인할 수 있다. 기본 인증은 Username에 user, Password에 위의 비밀번호를 복사해서 로그인 할 수 있다. 인증을 하기 전까지는 어떤 요청을 보내더라도 위의 페이지가 뜨게 되고 인증된 후에야 응답을 받을 수 있게 된다. 시큐리티의 기본적인 인증 방식은 위의 사진에서 알..
OAuth 2.0 인증 컴포넌트 Resource Owner 사용하고자 하는 리소스의 주인으로 웹 애플리케이션의 실제 사용자라고 생각하면 편하다. 구글 로그인 인증을 통해 사용자가 자신의 구글 계정으로 자신의 리소스를 사용하는 것이기 때문에 Resource Owner라고 부른다. Client 써드 파티 애플리케이션을 사용하지 않는 기존의 웹 애플리케이션에서 클라이언트는 사용자에 해당했지만 OAuth 2.0에서의 클라이언트는 웹 애플리케이션에 해당한다. 클라이언트는 서비스를 이용하는 쪽이고 서버는 제공하는 쪽인데 써드 파티 애플리케이션의 서비스를 제공받는 쪽은 웹 애플리케이션에 해당하기 때문이다. Resource Server 클라이언트의 요청을 수락하고 Resource Owner의 Resource를 제공하는..
da9dac
'Back-End/Security' 카테고리의 글 목록