💚 어떤 기능인가요?
POST /auth/register 는 permitAll 이다. 그런데 UserService.createUser 가 요청 본문의
role 을 그대로 엔티티에 넣는다. 인증 없이 누구나 관리자 계정을 만들 수 있다.
.role(UserRole.valueOf(role)) // 요청 본문의 role
.provider(userDto.getProvider()) // provider 도 그대로
.emailVerified(userDto.getProvider() != null)
curl -X POST /auth/register -H 'Content-Type: application/json' \
-d '{"email":"x@x.com","password":"pw123456","name":"공격자","role":"ADMIN"}'# → ADMIN 발급 → /api/admin/** 전체 접근곁가지로 provider 를 붙이면 비밀번호 검사를 건너뛰고 emailVerified=true 인 계정을
임의 이메일로 미리 만들 수 있다.
createUser 의 호출처는 이 공개 엔드포인트 하나뿐이고, 카카오 가입은
AuthServiceImpl.createNewUser 라는 별도 경로라 서버 고정이 안전하다.
✅ To Dos
💚 어떤 기능인가요?
POST /auth/register는permitAll이다. 그런데UserService.createUser가 요청 본문의role을 그대로 엔티티에 넣는다. 인증 없이 누구나 관리자 계정을 만들 수 있다.곁가지로
provider를 붙이면 비밀번호 검사를 건너뛰고emailVerified=true인 계정을임의 이메일로 미리 만들 수 있다.
createUser의 호출처는 이 공개 엔드포인트 하나뿐이고, 카카오 가입은AuthServiceImpl.createNewUser라는 별도 경로라 서버 고정이 안전하다.✅ To Dos
role을 무시하고 항상PARENT로 저장provider/providerId를 무시하고null로 저장emailVerified를 항상false로 시작provider로 비밀번호 검사를 건너뛰던 분기 제거UserRole.valueOf(null)로 500 이 나던 것 해결