[Spring] principalName cannot be empty 에러
2022. 8. 25. 20:30ㆍ개발공부 기강잡자/Java&Spring
Spring Security를 사용하여 OAuth 로그인을 구현하던 중, 로그인 처리 부분에서 principalName cannot be empty
에러가 발생했다.
UserDetails
인터페이스를 구현한 class
에서 getUsername()
의 내용을 구현하지 않았기 때문에 났다.
@Override
public String getUsername() {
return null;
}
return null
로 되어있던 부분을
@Override
public String getUsername() {
return siteUser.getUsername();
}
유저의 username
을 리턴하도록 수정했더니 에러가 사라지고 로그인 처리가 무사히 되었다.
이유가 무엇일까?
우선 UserDetails
인터페이스는 Spring Security 에서 로그인 사용자의 정보를 담는 인터페이스이다.
Spring Security에서 UserDetails
와 UserDetailsService
는 중요한 부분이라고 생각되기 때문에 따로 포스팅할 예정이라 본 포스팅에서는 간단하게만 다뤄보려고 한다.
username
은 계정의 고유한 값을 나타내며,
UserDetails
의 getUsername()
함수는 인증하기 위해 사용된 사용자의 username
을 리턴해야한다. null
을 return
하면 안된다.
이 값을 통해 시큐리티가 로그인 처리를 할 수 있는데 이 값을 null
로 리턴을 해버리니 로그인 처리에서 principalName cannot be empty
에러가 난 것이다.
Spring Security에 대해 많은 공부가 필요한 것 같다.
'개발공부 기강잡자 > Java&Spring' 카테고리의 다른 글
[Spring] java.lang.ClassNotFoundException: org.json.simple.parser.JSONParser 에러 (0) | 2022.08.31 |
---|---|
[Spring] thymeleaf - Error resolving template 에러 (0) | 2022.08.20 |
[Spring] STS에서 git clone 으로 프로젝트 import 하기 (0) | 2022.08.05 |
[Spring Boot] @Transactional Annotation 관련 (0) | 2022.07.19 |
[Spring Boot] 2022.07.07 ~ 2022.07.15 점프 투 스프링 실습 회고 (0) | 2022.07.19 |