해결된 질문
작성
·
364
0
8강 15:08쯤에 구글 로그인을 하고 http://localhost:8080/test/oauth/login 경로로 get요청을 보내게 되면 아래와 같은 에러가 발생합니다.
원인은 authentiacation의 값이 null이기 때문에 getPrincipal()을 하지 못하는 것 같습니다. 어떤 부분에서 Authentication객체에 값을 넣어주는 걸까요??
혹시 loadUser메소드에서는 값이 정확하게 노출이 되는것을 확인 할 수 있는데 혹시 loadUser에서 authentication객체에 값을 넣어주는 부분일까요??
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
김은재님의 질문은 구글 로그인 시 Authentication
객체에 null
값이 할당되어 NullPointerException
이 발생하는 문제와 관련 있습니다. 이 문제는 Spring Security와 OAuth2를 사용하여 구현할 때 자주 발생할 수 있는 일반적인 현상 중 하나입니다.
문제의 핵심은 Spring Security의 인증 과정 중에 Authentication
객체가 제대로 생성되지 않거나, 컨텍스트에 제대로 저장되지 않아서 발생할 수 있습니다. Authentication
객체는 보통 UserDetailsService
를 구현하는 서비스에서 loadUserByUsername
메소드를 통해 로드되고 생성됩니다. OAuth2 로그인 과정에서는 PrincipalOauth2UserService
가 loadUser
메서드를 통해 OAuth2User
객체를 로드하고, 이후 Authentication
객체를 생성하여 Security Context에 저장하는 과정을 거칩니다.
김은재님의 경우, 문제는 Authentication
객체가 왜 null
인지 그리고 어디에서 Authentication
객체에 값이 할당되어야 하는지에 관한 것으로 보입니다. 이와 관련하여 유사한 문제를 겪는 다른 사용자들의 질문과 답변을 찾아본 결과, 다음과 같은 내용이 도움이 될 수 있을 것 같습니다:
소셜 로그인 후 JWT 발급 문제 해결 방법에 대한 토론: 여기서는 소셜 로그인 과정에서 JWT를 발급하는 전반적인 과정과 문제 해결에 대한 방법이 논의되고 있습니다.
PrincipalOauth2UserService
내부에서 OAuth2 로그인 프로세스 후 PrincipalDetails
를 생성하고 반환하는 과정을 설명하고 있습니다. 이 과정에서 Authentication
객체가 생성되어 Security Context에 저장되는 방식이 설명되어 있습니다.OAuth2 인증 과정 중 Authentication 객체와 관련된 논의: OAuth2 인증 과정에서 인증 정보를 처리하는 방법에 대한 구체적인 사례와 설명입니다.
AuthenticationPrincipal
관련 문제에 대한 해결 방안을 제시하고 있습니다.이 정보들은 직접적으로 김은재님의 문제를 해결하는 구체적 방법을 제공하지는 않지만, Authentication
객체와 OAuth2를 사용한 로그인 과정에서 유사한 문제를 해결한 경험을 공유하고 있습니다. 특히 PrincipalOauth2UserService
에서 사용자 정보를 로드하고 이를 기반으로 Authentication
객체를 생성하는 과정에 주목해 보시길 권장합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.