결과적으론 둘 다 기본적으로 제공해준다! 명시하지 않아도
스프링 시큐리티에서는 기본적으로 로그인 페이지를 제공해준다.
기본 로그인 페이지는 DefaultLoginPageGeneratingFilter 이 친구가
내가 formLogin 설정을 하지 않는 이상 기본적으로

그럼

.formLogin(Customizer.withDefaults())는
formLogin이 기본적인 필터 구성에 자동으로 추가되긴 하지만, 명시적으로 Default로 설정해주는 것이고
.formLogin을 설정하지 않았을 경우에도 마찬가지로 default는 DefaultLoginPageGeneratingFilter를 만들어준다.
근데 여기서 formLogin과 HTTP Basic Authentication의 차이에 대해서 잘 모르겠다.
HTTP Basic Authentication는
http.Basic으로 활성화 시키고 form이랑 다르게
HTTP 요청 헤더의 Authorization 필드에 username과 password를 Base64로 인코딩하여 전송하는 방식
매 번 계속 넣어야 하는 걸로 알고 있음 이게 안온다면 401error
둘 중 사실 formLogin이 보안상 이점을 갖고 있다.
그렇다면 왜 http.Basic쓰냐?
아마 login 페이지를 만들 수 없거나 모종의 이유일 것이다..

(form 은 post로 전송하는거다)
즉! .formLogin(Customizer.withDefaults())을 명시적으로 불러주지 않아도 기본으로 작동해서
오해한 거 였다..
.formLogin() 설정 자체를 안하면
HTTP Basic Authentication로 해야 하는 줄 알았는데 form login 페이지가 로딩되길래.. 헷갈렸다.
http.basic을 기본옵션으로 주고 설정해봤는데

그 결과 값

결과 값은 일반 formLogin이랑 똑같다...
http.basic을 활성화하고 로그인을 보내면 header에 authorization 값이 포함될줄 알았으나.. 아니다
아직 미완ㅠ 모르겠네
-- 해결 ---

기본적으로 둘 다 활성화한다.
일반적으로 둘 다 8080/login으로 redirect 시키길래
내가한 설정에 따라 formLogin 활성 http.basic 비활성 등이 아닌가라는 생각이 있었는데
그냥 둘 다 활성화됐고, 내가 계속 웹브라우저로 요청을 보내서 formLogin으로 authorization 해더가 포함되지 않은 것이다.
다시 헤더 값에 http.basic 형식으로 넣어주면


실제로 authorization에 basic 64로 인코딩된 값이 넘어온다!
해결!
그리고 원래 예시대로 둘 다 명시하지 않아도 자동이라는 걸 알 수 있다.