오늘의 키워드
- OAuth2
- Password Encoder
- ClientRegistrationRepository
오늘의 내용
- Spring Security와 OAuth2:
오늘은 Spring Security를 활용해 OAuth2 소셜 로그인 기능을 구현했다. 특히, 구글, 네이버, 카카오와 같은 소셜 로그인 기능을 추가하면서 클라이언트 등록과 인증 매니저 설정 등을 진행했다. - Password Encoder 설정:
프로젝트 내에서 비밀번호 인코딩을 위해 BCryptPasswordEncoder를 사용했다. 그러나 동일한 빈 이름(passwordEncoder)이 두 번 정의되어 충돌이 발생했다. 이를 해결하기 위해 한 곳에서만 빈을 정의하도록 수정했다. WebSecurityConfig에서 passwordEncoder 빈을 정의하고 AppConfig에서는 해당 정의를 제거했다.
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
- ClientRegistrationRepository 설정:
소셜 로그인 기능을 위해 ClientRegistrationRepository와 OAuth2AuthorizedClientManager 빈을 설정했다. Spring Security 6에서는 이를 직접 빈으로 등록해주어야 했다. 설정이 누락되면 ClientRegistrationRepository 타입의 빈을 찾을 수 없다는 에러가 발생하기 때문이다.
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository();
}
@Bean
public OAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrationRepository,
OAuth2AuthorizedClientRepository authorizedClientRepository) {
DefaultOAuth2AuthorizedClientManager authorizedClientManager = new DefaultOAuth2AuthorizedClientManager(
clientRegistrationRepository, authorizedClientRepository);
return authorizedClientManager;
}
프로젝트 설정과 문제 해결:
- application.properties 파일에서 OAuth 클라이언트 설정을 추가했다. 각 소셜 로그인 제공자의 클라이언트 ID와 비밀 키를 설정했다.
- WebSecurityConfig에서 SecurityFilterChain을 설정하여 다양한 경로에 대한 접근 권한을 설정했다. OAuth2 로그인과 JWT 인증 필터를 추가했다.
오늘의 회고
소셜 로그인 기능을 구현하면서 이 방법 저 방법 사용중에 있지만 아직 문제를 해결하지 못해서 아마 주말에 해결해야 할 거 같다. 처음엔 몸이 적응을 못해서 잠도 일찍 잘 오고 했지만 이제 몸이 적응을 해서 그런가 다시 약을 먹어야 새벽 3시는 돼서 간신히 잠드는 거 같다. 흠 이래서 이 여름을 끝까지 버틸 수 있을지.....🤮🤮🤮🤮
'TIL' 카테고리의 다른 글
TIL내일배움캠프 11주차 JPA심화 H2 데이터베이스 사용 방식 및 SQL 종류 (0) | 2024.06.27 |
---|---|
TIL내일배움캠프 10주차 박싱, 언박싱 등 (0) | 2024.06.26 |
내일배움캠프 10주차 Java 상속 (0) | 2024.06.20 |
내일배움캠프 10주차 Spring AOP (1) | 2024.06.19 |
내일배움캠프 10주차 Spring Test (0) | 2024.06.19 |