inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티 완전 정복 [6.x 개정판]

익명 인증 사용자 – anonymous()

컨트롤러에서 그냥 Authentication을 파라미터로 받아요면 null인 이유

284

최지호

작성한 질문수 1

0

컨트롤러가 실행되는 시점이면 이미 모든 Filter를 거쳤으니 AnonymousAuthenticationFilter도 거쳤을거라 생각하고, SecurityContext에도 AnonymousAthenticationToken이 있으니,
Authentication에 AnonymousAthenticationToken이 있을거라 생각했는데, 왜 null이 있는건가요??

그리고 왜 @CurrentSecurityContext로 찾을때만 AnonymousAthenticationToken를 받을수 있는건가요??

spring spring-boot spring-security security web-security

답변 2

0

정수원

네 강의에서 설명하는 내용 그대로입니다.

그 이유는 익명 사용자인 경우 스프링 MVC 에서 굳이 객체를 참조해 줄 필요가 없다고 판단한 것 같습니다.

대신 SecurityContext 객체는 유효하므로 객체로 참조할 수 있고 그렇게 되면 SecurityContext 안에는 익명사용자 객체가 존재할 것이므로 그렇게 접근하라고 하는 것 같습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

님의 질문은 스프링 시큐리티의 작동 방식과 관련된 것으로 보입니다. 스프링 시큐리티는 요청이 처리되는 동안 다양한 필터를 통해 인증 정보를 SecurityContext에 저장합니다. 컨트롤러에서 Authentication 객체를 파라미터로 직접 받으려고 할 때 null이 발생하는 이유는 스프링이 자동으로 해당 객체를 메소드 파라미터로 주입해주는 기능이 기본적으로 활성화되어 있지 않기 때문일 수 있습니다.

스프링 시큐리티에서는 @AuthenticationPrincipal이나 @CurrentSecurityContext 어노테이션을 사용하여 현재 인증된 사용자의 상세 정보나 SecurityContext를 메소드 파라미터로 받을 수 있도록 지원합니다. 특히, @CurrentSecurityContext를 사용하면 SecurityContext에서 직접 Authentication 객체를 추출할 수 있으며, 이 경우에는 해당 컨텍스트에 저장된 AnonymousAuthenticationToken을 포함하여 현재 인증 정보를 가져올 수 있습니다.

이 정보만으로는 구체적인 코드 상황과 스프링 시큐리티의 설정을 모두 파악하기는 어렵습니다만, 일반적으로 컨트롤러에서 Authentication 객체를 직접 받으려 할 때 null이 반환되는 문제는 스프링 시큐리티의 인증 프로세스와 스프링의 파라미터 주입 방식 사이의 연동에 주의를 기울여야 해결할 수 있습니다. @CurrentSecurityContext를 통해 Authentication 객체를 받을 때 정상적으로 작동하는 것은 이 어노테이션이 SecurityContext로부터 직접 정보를 가져오도록 구성되어 있기 때문입니다.

더 자세한 내용은 스프링 시큐리티 공식 문서 or 관련 참고 자료를 확인하시는 것을 추천드립니다.

로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.

0

35

2

단원별 소스코드

0

65

2

CustomAuthenticationProvider 추가 관련 문의

0

78

2

AOP 의존성 명칭 변경

0

77

1

빈 1개 등록 시 다른 해결 방법

0

70

1

@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?

0

87

2

OIDC의 id token에 담긴 데이터에 대해

0

78

1

loginPage("/loginPage") 질문드립니다.

0

69

1

@EnableWebSecurity

0

148

1

트랜잭션과 롤백

0

100

1

68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제

0

91

2

AuthenticationManager 사용 방법

0

153

2

HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문

0

108

2

spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??

0

192

1

init(B Builder), configure(B builder) 에 대하여 질문 드립니다.

0

109

2

메타 주석 질문

0

69

1

동시세션제어 기능에서 로그아웃하기

0

152

3

로그인 후, redirect 에서 error

0

140

3

Session 생성 타이밍에 대한 질문

0

86

2

강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.

0

135

2

customAuthentication 관련

0

132

2

authenticationManagerBuilder 주입받은거 vs 만든 거

0

114

1

UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?

0

101

1

9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.

0

162

2