inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티

11) 인증 거부 처리 - Access Denied

(해결완료) exceptionHandling()을 사용할 수가 없습니다

해결된 질문

657

강프로그래머

작성한 질문수 110

8

무엇이 문제인건가용...?

spring-boot Spring Security java

답변 6

6

정수원

확인해 보니 제네릭 부분이 조금 문제가 있었습니다.

보시면

1. defaultSuccessUrl("/") 는 FormLoginConfigurer<HttpSecurity> 가 리턴되고 있고

2. authenticationDetailsSources(authenticationDetailsSource) 는 FormLoginConfigurer 가 리턴되고 있습니다.

이둘의 차이는 api 가 실행되고 나서 리턴되는 객체가 HttpSecurity 타입으로 되어야 하는데 2번은 제네릭이 적용되지 않아서 최상위 인터페이스인 SecurityBuilder 타입의 객체가 리턴되고 있습니다.

일단 

@Autowired
private AuthenticationDetailsSource authenticationDetailsSource;

으로 선언되어 있는 부분을

@Autowired
private FormAuthenticationDetailsSource authenticationDetailsSource;

으로 하시면 정상적으로 HttpSecurity 타입의 객체가 반환되고 있습니다.

일반적으로 동일한 인터페이스 타입으로 동일한 이름을 가진 빈을 두개 이상 선언하지 않으면 오류가 발생하지 않기 때문에 AuthenticationDetailsSource authenticationDetailsSource 로 선언해도 상관없고 실제로 확인해 보면 authenticationDetailsSource 가 FormAuthenticationDetailsSource 타입의 객체로 DI 되고 있습니다.

다만 AuthenticationDetailsSource authenticationDetailsSource 했을 경우 FormLoginConfigurer<HttpSecurity> 가 아닌 FormLoginConfigurer 로 적용되어 최종 리턴타입이 HttpSecurity 가 아닌 SecurityBuilder 타입이 되는 부분은 아직 정확한 원인을 모르겠네요

우선 FormAuthenticationDetailsSource authenticationDetailsSource 게 선언하셔서 사용해 주시기 바랍니다.

정확한 원인을 알게 되면 다시 답변을 드리도록 하겠습니다. 

0

잠꾸

리턴 타입을 AuthenticationDetailsSource<HttpServletRequest, WebAuthenticationDetails> 제네릭으로 선언하면 잘 되는 것 같습니다!

0

강프로그래머

8) 인증 부가 기능  - WebAuthenticationDetails, AuthenticationDetailsSource -> 14:06

--------------------------------------------------------------------------------------------------------------------------

9) 인증 성공 핸들러 : CustomAuthenticationSuccessHandler -> 8:30

@Autowired

private AuthenticationDetailsSource authenticationDetailsSource;

위의 코드가 사라짐

--------------------------------------------------------------------------------------------------------------------------

10) 인증 실패 핸들러 : CustomAuthenticationFailureHandler

@Autowired

private AuthenticationDetailsSource authenticationDetailsSource;

위의 코드가 여전히 없음

--------------------------------------------------------------------------------------------------------------------------

11) 인증 거부 처리 - Access Denied

위의 @Authwired쪽으로 화면이 올라가지 않아서 알 수 없음

--------------------------------------------------------------------------------------------------------------------------

위의 이유로 이러한 일이 발생한 것 같습니다.

강의 수정하시는데 도움이 되셨으면 좋겠습니다

답변 주셔서 감사합니다 강사님!

0

강프로그래머

죄송합니다 강사님

private 상태였네요 ㅠㅠ

다시 public 상태로 변경했습니다!

0

정수원

죄송하지만 url 정보가 없는 것으로 나옵니다

다시 한번 확인 부탁드립니다.

0

강프로그래머

강사님 답변주셔서 감사합니다!

https://github.com/KMSKang/basicsecurity

깃헙에 푸쉬해서 올려드립니다!

0

정수원

올려주신 내용을 보면 리턴되는 타입이 HttpSecurity 가 아닌 SecurityBuilder 로 나오는데

제가 해보니 HttpSecurity 가 리턴되고 있습니다.

재현이 안되고 있는데 혹시 해당 소스 올려 주실 수 있을까요?

시큐리티 공부 버전 질문

0

175

1

[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈

0

185

1

AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우

0

174

1

강의 코드가 왜이렇게 뒤죽박죽인가요...

0

249

1

메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..

0

235

1

파라미터값이 넘어가지 않습니다 ....

0

374

1

security filterChain 설정 질문이 있습니다.

0

331

1

소스 부분 질문 드립니다.

0

208

2

섹션4 7번 강의 문제가 있는거 같네요.

0

344

2

파일이 수시로 이름이 바껴있네요 ㄷㄷ

0

304

1

HttpSessionSecurityContextRepository를 사용안하는 문제

0

555

2

error , exception 이 잘 안됩니다.

0

280

2

thymeleaf tag 질문합니다.

0

196

2

버전업하면서 deprecated된 것들이 너무많아요

0

478

1

spring security 패치 관련

0

437

1

모바일을 사용할때 토큰말고 세션

0

845

2

DB 연동한 인가 부분에 대한 질문입니다!

0

264

1

Ajax방식도 똑같이 Session방식을 사용하는건가요?

0

307

1

Config 파일 생성 시 질문이 있습니다.

0

225

1

강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..

1

429

2

403 에러 뜹니다.

0

813

2

login_proc의 존재에 대한 간략한 설명입니다

0

276

1

top.html에 로그인 링크를 만들어서 로그인을 해봤습니다

0

282

2

안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!

0

189

1