inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

해결된 질문

677

김은재

작성한 질문수 70

0

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

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

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

spring spring-security jwt

답변 2

0

김은재

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

0

인프런 AI 인턴

안녕하세요, 인프런 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 객체를 생성하는 과정에 주목해 보시길 권장합니다.

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

JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?

0

95

1

Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?

0

401

1

13:23 system.out 출력문이 다르게 나옵니다.

0

130

1

수료증 문의

0

226

2

9분대에 질문이 있습니다 !

0

114

1

password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?

0

320

1

이전 강의 참고하라는 말씀

0

253

1

강의 실습하다가 막히는 분들 참고(2024년8월 기준)

2

1116

2

구글 소셜 로그인 302

0

200

1

오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize

1

584

1

[자바] 시큐리티 Config 참고

13

953

1

이론강의

0

280

1

SpringSecurity JWT 로그인 URL 2개 설정하는 방법

0

487

1

2024.06기준) 최근 SecurityConfig 설정 문의

0

921

3

특정 url필터 거는 방법 이슈

0

422

1

강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?

0

277

1

25강 마지막 테스트에서 오류

1

1044

2

jwt를 저장하는 위치에 궁금한 점이 있습니다.

0

298

1

mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데

0

696

1

세션 인증방식이 REST 원칙에 위배되는 건가요?

0

338

1

jwt와 실제데이터의 관계

1

242

1

jwt 와 세션ID의 관계

1

312

1

SecurityConfig에서 세션 설정, 인가 설정

0

418

1

섹션2 9강까지 듣고 질문이 있습니다. 스프링부트 버전을 다운그레이드해도 될까요?

0

395

1