Programming-[Backend]/Spring Security (25) 썸네일형 리스트형 [스프링 시큐리티] 17. Ajax 인증 구현 - DSL, CSRF 1. DSL DSL(Domain-specific language, 도메인 특화 언어)는 특정화된 도메인을 적용하는데 특화된 언어이다. HTML과 같이 웹 전체에서 널리 쓰이는 언어의 개념이 아니라 특정한 도메인에서만 쓰이는 언어라고 보면 된다. 지금 학습하고 있는 맥락에서 이해하자면, filter나 handler 등의 http. 환경설정 메서드의 set를 만든다고 생각하면 될 것 같다. spring security를 전반적으로 다 이해하고 환경설정 set를 만들어서 활용할 정도가 되어야 사용할 것 같다. 그래서 이 부분은 가볍게 이해하고 넘어가면 될 것 같다. AbstractHttpConfigurer 초기화를 위한 설정 클래스이다. 이 클래스를 이용해서 스프링 시큐리티의 환경설정 set를 만든다. con.. [스프링 시큐리티] 16. Ajax 인증 구현 - 인증, 인가 처리 1. 인증 처리 : AuthenticationSuccessHandler & AuthenticationFailureHandler From 인증과 같이 인증 성공과 실패 시 handler를 적용한다. Form 인증 방식과 다를 게 없고, View 형태로 응답하는 것이 아니라 response의 body에 정보를 담아서 보내주는 형태이다. AuthenticationSuccessHandler response에 정보를 담기 위해서 ObjectMapper를 불러온다. 그리고 앞선 글에서 살펴본 AuthenticationManager에서 성공한 인증 객체, authentication을 받아와서 Account 객체로 만들어서 응답값으로 반환한다. public class AjaxAuthenticationSuccessHan.. [스프링 시큐리티] 15. Ajax 인증 구현 - AbstractAuthenticationProcessingFilter, Token, AuthenticationProvider 1.Ajax 인증 개요 Ajax 인증은 Form 인증과 유사하다. 다만, Form 인증은 동기적인 방식으로 인증처리를 했던 것에 비해서 Ajax 인증은 비동기적인 방식으로 인증을 처리한다. AjaxAuthenticationFilter -> AjaxAuthenticationToken -> AuthenticationManager -> AjaxAuthenticationProvider Ajax 인증의 가장 큰 기본적인 흐름은 위와 같다. Form 인증과 별반 다를게 없다. ※Ajax Asynchronous Javascript and XML의 약자이다. 비동기적으로 클라이언트에서 서버로 요청을 하여, 웹페이지의 일부만을 비동기적으로 갱신할 수 있게 해서 웹페이지의 효용성을 높인다. 2. Ajax 인증 필터 만들기.. [스프링 시큐리티] 14. 인증 실패, 거부 처리 ; AuthenticationHandler, AccessDeniedHandler 1. 인증 실패 처리 인증 실패를 처리하는 과정은 이전 글의 인증 성공처리를 하는 부분과 매우 유사하다. CustomAuthenticationHandler를 작성한다. @Component public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { String errorMessage.. [스프링 시큐리티] 13. 인증 부가/ 성공 처리 기능 : WebAuthenticationDetails, AuthenticationSuccessHandler 1. Details 정보 넣기 Details는 기본적으로는 username, password 정보를 갖는 객체이지만, 추가로 정보를 넣어 인증 과정에 활용할 수도 있다. 아래 예시는 클라이언트에서 form 태그에서 secret_key라는 정보를 서버로 넘겨주어야만 인증이 되게 하는 방식이다. SecurityConfig에서 authenticationDetailsSource 사용 설정 우선 SecurityConfig 설정 파일에서 authenticationDetailsSource 메서드를 사용하여 Details 정보를 추가할 수 있도록 설정해준다. .authenticationDetailsSource에 대해 의존성 추가 작업도 해준다. private final AuthenticationDetailsSource.. [스프링 시큐리티] 12. DB 연동 인증 처리 : AuthenticationProvider, 로그인 및 로그아웃 페이지 처리 1. DB 연동 인증 : AuthenticationProvider 사용 이전 글에서는 AuthenticationManager 단에서 userDetailsService 메서드를 활용해서 인증을 처리했다. SecurityConfig에서 해당 메서드를 불러와서 처리되는 과정까지만 학습했다. 이번 글에서는 한 단계 더 나아가서, AuthenticationManager에서 호출하는 AuthenticationProvider의 기능을 구현해본다. SecurityConfig - authenticationProvider SecurityConfig 클래스에서는 이전에 사용했던 userDetailsService 대신 authenticationProvider 메서드를 사용한다. 여기서 authenticationProvider.. [스프링 시큐리티] 11. 회원가입, DB 연동 인증 처리 1. 회원가입 처리 회원가입을 해본다. 강의에서 정확한 소스 코드를 찾을 수 없어서 내 맘대로 작성한 코드라 UI나 코드 효용성이 별로일 수 있다. 그리고 기록을 위해서 대부분의 코드를 붙여놓겠다. UserController /users url로 Get, Post Mapping을 한다. 회원등록을 할 수 있는 GetMapping 페이지에는 model 객체에 roles를 전달해준다. 회원등록을 실제 진행하는 PostMapping에서는 사용자의 입력값을 AccountDto 형태로 받아온다. userService에서 userRepository.save를 할건데, 해당 레포지토리는 Account Entity 형태로만 저장이 가능하므로 modelMapper를 이용한다. @Controller @AllArgsCons.. [스프링 시큐리티] 10. 프로젝트 생성, PostgreSQL, PasswordEncoder, WebIgnore 1. 프로젝트 생성 강의에서 제공하는 소스 코드를 활용하여 처음부터 rebuilding 해본다. 정수원님 스프링 시큐리티 강의 소스 https://github.com/onjsdnjs/corespringsecurity fork 후 내 repository에서 새로운 branch를 따고, 강의를 따라하며 원리를 이해하면 될 것 같다. PostgreSQL 강의에서는 postgreSql을 사용한다. 앱을 실행하려면 application.properties에 DB 연결 정보가 있어야되는데, 강의에서 주어진 코드의 연결정보로는 연결이 어려울 수 있다. 그래서 잠시 postgreSql을 공부해야되는데, 괜찮은 블로그가 참조 2에 있다. 편의를 위해 application.properties 파일은 application... 이전 1 2 3 4 다음