kok202
스프링 시큐리티 개요

2019. 8. 3. 18:23[정리] 기능별 개념 정리/Security + OAuth

강의 출처

포스팅 CSRF 

 

 

 

웹 보안의 3요소

1. 인증

2. 권한 부여

3. 잘못된 접근에 대한 화면 처리

 

 

 

스프링 시큐리티 : 위의 보안과 관련된 개발자가 전부 작업해야 하는 과정을 자동화해준다.

  • 사용권한 관리
  • 비밀번호 암호화 (BCrypt : salt 가 적용되서 같은 암호여도 다른 해시로 암호화된다.)
  • 회원가입 처리
  • 로그인
  • 로그아웃

 

 

 

앞선 포스팅과 겹치는 내용인 코드는 생략

public class UserDeniedHandler implements AccessDeniedHandler {
    @override
    public void handle(HttpServletRequest req, HttpSerlvetResponse res, AccessDeniedException exp) throws IOException, SevletException{
        req.setAttribute("errMsg", "Only admin access this page.");
        req.getRequestDispatcher("WEB-INF/view/user/denied.jsp").forward(req, res);
    }
}

관리자 기능에 일반 사용자가 접근할 때 페이지를 포워딩 시킨다.

 

 

 

public class UserLoginFailureHandler implements AuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure((HttpServletRequest req, HttpSerlvetResponse res, AuthenticationException exp) throws IOException, SevletException{
        req.setAttribute("errMsg", "ID, Password not correct.");
        req.getRequestDispatcher("WEB-INF/view/user/login.jsp").forward(req, res);
    }
}

로그인이 실패했을 때 실행된다.

 

 

 

public class UserLoginSuccessHandler implments Authentication SuccessHandler{
    @Override
    public void onAuthenticationSuccess(HttpServletRequest req, HttpSerlvetResponse res, Authentication auth) throws IOException, SevletException{
        req.setAttribute("msg", auth.getName() + " welcome");
        req.getRequestDispatcher("/").forward(req, res);
    }
}

로그인이 성공 했을 때 실행된다.

 

 

 

CSRF 공격을 막기위해 스프링 시큐리티는 아래 html 태그가 반드시 필요하다

<input type="hidden" name="${csrf.parameterName}" value="${_csrf.token}">

 

 

 

'[정리] 기능별 개념 정리 > Security + OAuth' 카테고리의 다른 글

OAuth 그림 요약  (0) 2019.08.23
스프링 시큐리티 주요 인터페이스  (0) 2019.08.03
Security 기초 (2)  (0) 2019.07.13
Security 기초 (1)  (0) 2019.07.13
Security OAuth2 강의 정리  (0) 2019.07.13