SpringSecurity - Form인증2

Shaun·2022년 2월 7일
1

Spring Security

목록 보기
10/19

WebAuthenticationDetails/ AuthenticationDetailsSource

  • 클라이언트가 userName이나 password외에 또다른 추가정보를 보낼때 그것을 저장하는 방법이다.

  • AuthenticationDetailsSource에 의해 webAuthetnticationDetails가 생성되며 이곳에 추가 데이터들이 저장되고 이것은 Authentication 안에있는 detail이라는 클래스에 저장된다.

  • web은 request라는 객체를 통해서 추가정보 저장

  • Authentication -setDetails -> authenticationDetailsSource-> webAuthenticationDetails 순서로 진행됀다.

  • 추가적인 데이터를 실질적으로 저장하는곳

  • 그곳을 생성하는 곳

  • config에 추가

provider에 추가 정보 인증 추가

  • 클라이언트가 보낸 추가 데이터까지 일치해야 인증 성공코드를 provider에 추가해준다.

AuthenticationSuccessHanlder


  • requestCache (사용자가 인증 오류를 내기전 요청했던 정보)
  • savedRequest = 실질적으로 그 요청 데이터(URL)가 저장되있는곳이다. 그곳으로 sendRedirect를 해준다.

AuthenticationFailureHanlder


  • 예외 종류에 따라 에러메세지가 다르게 나가도록 설정했다.

AccessDenied

  • 인증은 성공했지만 권한부족으로 인한 인가 예외가 일어날 경우

  • FilterIntercepter에서 인증,인가 예외 처리 ->예외 발생시 ExceptionTranslationFilter 안에서 예외 처리함.

  • ExceptionTranslationFilter 안에있는 AccessDeniedHandler을 구현해보자

  • controller의 url을 호출하는 코드이다.

  • 인증한 계정의 userName과 accessDeniedHanlder에서 보낸 exception 내용을 view단으로 전달 한다.

  • SpringSecurity가 우리가만든 accessDeniedHanlder를 사용하도록 config에 설정 해준다.

profile
호주쉐프에서 개발자까지..

0개의 댓글