인프런 커뮤니티 질문&답변

김은재님의 프로필 이미지

작성한 질문수

스프링부트 시큐리티 & JWT 강의

스프링부트 시큐리티 8강 - Authentication객체가 가질수 있는 2가지 타입

구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.

해결된 질문

작성

·

364

0

8강 15:08쯤에 구글 로그인을 하고 http://localhost:8080/test/oauth/login 경로로 get요청을 보내게 되면 아래와 같은 에러가 발생합니다.

원인은 authentiacation의 값이 null이기 때문에 getPrincipal()을 하지 못하는 것 같습니다. 어떤 부분에서 Authentication객체에 값을 넣어주는 걸까요??

혹시 loadUser메소드에서는 값이 정확하게 노출이 되는것을 확인 할 수 있는데 혹시 loadUser에서 authentication객체에 값을 넣어주는 부분일까요??

답변 2

0

김은재님의 프로필 이미지
김은재
질문자

제가 sessionmanagent 설정을 안하도록 해두었네요. 이설정 제거하니 바로 되었습니다.

0

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

김은재님의 질문은 구글 로그인 시 Authentication 객체에 null 값이 할당되어 NullPointerException이 발생하는 문제와 관련 있습니다. 이 문제는 Spring Security와 OAuth2를 사용하여 구현할 때 자주 발생할 수 있는 일반적인 현상 중 하나입니다.

문제의 핵심은 Spring Security의 인증 과정 중에 Authentication 객체가 제대로 생성되지 않거나, 컨텍스트에 제대로 저장되지 않아서 발생할 수 있습니다. Authentication 객체는 보통 UserDetailsService를 구현하는 서비스에서 loadUserByUsername 메소드를 통해 로드되고 생성됩니다. OAuth2 로그인 과정에서는 PrincipalOauth2UserServiceloadUser 메서드를 통해 OAuth2User 객체를 로드하고, 이후 Authentication 객체를 생성하여 Security Context에 저장하는 과정을 거칩니다.

김은재님의 경우, 문제는 Authentication 객체가 왜 null인지 그리고 어디에서 Authentication 객체에 값이 할당되어야 하는지에 관한 것으로 보입니다. 이와 관련하여 유사한 문제를 겪는 다른 사용자들의 질문과 답변을 찾아본 결과, 다음과 같은 내용이 도움이 될 수 있을 것 같습니다:

  1. 소셜 로그인 후 JWT 발급 문제 해결 방법에 대한 토론: 여기서는 소셜 로그인 과정에서 JWT를 발급하는 전반적인 과정과 문제 해결에 대한 방법이 논의되고 있습니다.

    • 소셜 로그인 후 JWT 발급 – 이 답변에서는 PrincipalOauth2UserService 내부에서 OAuth2 로그인 프로세스 후 PrincipalDetails를 생성하고 반환하는 과정을 설명하고 있습니다. 이 과정에서 Authentication 객체가 생성되어 Security Context에 저장되는 방식이 설명되어 있습니다.
  2. OAuth2 인증 과정 중 Authentication 객체와 관련된 논의: OAuth2 인증 과정에서 인증 정보를 처리하는 방법에 대한 구체적인 사례와 설명입니다.

    • 11강 네이버 로그인 정보 처리 – 이 질문과 답변은 네이버 로그인 정보를 처리하는 과정에서 발생할 수 있는 AuthenticationPrincipal 관련 문제에 대한 해결 방안을 제시하고 있습니다.

이 정보들은 직접적으로 김은재님의 문제를 해결하는 구체적 방법을 제공하지는 않지만, Authentication 객체와 OAuth2를 사용한 로그인 과정에서 유사한 문제를 해결한 경험을 공유하고 있습니다. 특히 PrincipalOauth2UserService에서 사용자 정보를 로드하고 이를 기반으로 Authentication 객체를 생성하는 과정에 주목해 보시길 권장합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.