문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
booet.1.3 환경에서 진행중입니다. 963584
프론트 - 카카오 인가 코드 얻기
백엔드 - 프론트로부터 얻어온 인가코드로 토큰 조회, 토큰으로 사용자 정보 조회
이렇게 진행을 하려고합니다.
현재 인가코드를 얻어서 controller를 통해서 토큰을 얻는건 확인해봤는데
controller없이 securityconfig의 oauth2를 사용해서 조회하고자합니다.
securityconfig
public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity
//html 공격 막기 위한 csrf 비활성화
.csrf(AbstractHttpConfigurer::disable)
//
.cors(AbstractHttpConfigurer::disable)
//h2 콘솔 사용 위함
.headers(c -> c.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable).disable())
//cors 필터
.addFilter(corsConfig.corsFilter())
//url 요청 권한 설정
.authorizeHttpRequests(config -> config.anyRequest().permitAll())
.oauth2Login(oauth2Configurer -> oauth2Configurer
.successHandler(successHandler()).userInfoEndpoint()
.userService(oAuth2UserService))
//401(Unauthorized), 403(Forbidden) 제어
.exceptionHandling(c ->
c.authenticationEntryPoint(entryPoint).accessDeniedHandler(accessDeniedHandler)
)
.sessionManagement(c -> c.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.apply(new JwtSecurityConfig(tokenProvider))
;
return httpSecurity.build();
OAuth2UserService
| 여기서 정보를 확인 해보고 싶습니다.
public class OAuth2UserService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
log.debug("userRequest = " + userRequest);
OAuth2User oAuth2User = super.loadUser(userRequest);
// Role generate
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList("ROLE_ADMIN");
// nameAttributeKey
String userNameAttributeName = userRequest.getClientRegistration()
.getProviderDetails()
.getUserInfoEndpoint()
.getUserNameAttributeName();
// DB 저장로직이 필요하면 추가
return new DefaultOAuth2User(authorities, oAuth2User.getAttributes(), userNameAttributeName);
}
}
결국 원하는건 프론트에서 얻은 인가코드를 백엔드로 보내서 oauth2가 실행되는건데
method는 post로 보내겠지만 uri를 어떻게 설정해야할지 모르겠습니다.
아니면 인가코드를 백엔드로 넘기면 security의 필터에 안걸리는것인가요