본문 바로가기

공부/Spring

(45)
스프링 부트 3 백엔드 개발자 되기_26 기존 application.yml 파일 spring: jpa: #전송 쿼리 확인 show-sql: true properties: hibernate: format_sql: true defer-datasource-initialization: true datasource: url: jdbc:h2:mem:testdb username: sa h2: console: enabled: true jwt: issuer: ajufresh@gmail.com secret_key: study-springboot security: oauth2: client: registration: google: client-id: client-secret: scope: - email - profile 을 spring: security: oaut..
스프링 부트 3 백엔드 개발자 되기_25 org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Bean method 'tokenAuthentication' must not be private or final; change the method's modifiers to continue Offending resource: class path resource [me/shinsunyoung/springbootdeveloper/config/WebOAuthSecurityConfig.class] at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailF..
스프링 부트 3 백엔드 개발자 되기_24 어제 안됐던 AddArticleRequest 클래스 toEntity 부분 Article 클래스에서 뭐 잘못작성한거 같아서 보니까 Article에 @Builder를 두개 쓰고 있길래 하나 지웠더니 잘 적용이 됨 Article클래스에 ################Article클래스에 작성한 두개################### @Builder public Article(String title, String content) { this.title = title; this.content = content; } @Builder public Article(String author, String title, String content){ this.author = author; this.title = title; t..
스프링 부트 3 백엔드 개발자 되기_23 @NoArgsConstructor //기본 생성자 추가 @AllArgsConstructor //모든 필드 값을 파라미터로 받는 생성자 추가 @Getter public class AddArticleRequest { //private String id; private String title; private String content; public Article toEntity(String author){ //생성자를 사용해 객체 생성 return Article.builder() .title(title) .content(content) .author(author) //여기서 에러남 .build(); } } Cannot resolve method 'author' in 'ArticleBuilder' No cand..
스프링 부트 3 백엔드 개발자 되기_22 OAuth2와 JWT를 함께 사용하려면 기존 스프링 시큐리티를 구현하며 작성한 설정이 아니라 다른 설정을 사용해야함 config 패키지 WebOAuthSecurityConfig 클래스 1.filterChain() 메서드 : 토큰 방식으로 인증해서 기존 폼 로그인, 세션 기능을 비활성화함 2.addFilterBefore() 헤더값 확인용 커스텀 필터 추가 : 헤더 값을 확인할 커스텀 필터를 추가, 이필터는 9.2.4 '토큰 필터 구현하기'에서 구현한 TokenAuthenticationFilter클래스임 3.authorizeReauests()메서드 URL 인증 설정 : 토큰 재발급 URL은 인증 없이 접근하도록 설정하고 나머지 API들은 모두 인증을 해야 접근하도록 설정 4,5 oauth2Login()메서드..
스프링 부트 3 백엔드 개발자 되기_21 10장 OAuth2로 로그인/로그아웃 구현하기 OAuth는 제3의 서비스에 계정 관리를 맡기는 방식 ex)네이버로 로그인하기, 구글로 로그인하기 관련 용어 정리 리소스 오너: 자신의 정보를 사용하도록 인증 서버에 허가하는 주체, 서비스를 이용하는 사용자가 리소스 오너에 해당 리소스 서버: 리소스 오너의 정보를 가지며 리소스 오너의 정보를 보호하는 주체를 의미, 네이버,구글,페이스북이 리소스 서버에 해당 인증 서버: 클라이언트에게 리소스 오너의 정보에 접근할 수 있는 토큰을 발급하는 역할을 하는 애플레케이션을 의미 클라이언트 애플리케이션: 인증 서버에게 인증을 받고 리소스 오너의 리소스를 사용하는 주체를 의미, 지금 만들고 있는 서비스가 이에 해당 클라이언트가 리소스 오너 정보를 취득할 수 있는 방법은 4..
스프링 부트 3 백엔드 개발자 되기_20 9.3 토큰 API구현하기 리프레시 토큰을 전달받아 검증하고 유효한 리프레시 토큰이라면 새로운 액세스 토큰을 생성하는 토큰 API를 구현합니다. @DisplayName("createNewAccessToken: 새로운 액세스 토큰을 발급한다.") @Test public void createNewAccessToken() throws Exception{ //given 테스트 유저를 생성하고 jjwt라이브러리를 이용해 리프레시 토큰을 만들어 데이터베이스에 저장 //토큰생성 API의 요청 본문에 리프레시 토큰을 포함하여 요청 객체를 생성 final String url = "/api/token"; User testUser = userRepository.save(User.builder() .email("user@gm..
스프링 부트 3 백엔드 개발자 되기_19 @SpringBootTest public class TokenProviderTest { @Autowired private TokenProvider tokenProvider; @Autowired private UserRepository userRepository; @Autowired private JwtProperties jwtProperties; //generateToken() 검증 테스트 @DisplayName("generateToken(): 우저 정보와 만료 기간을 전달해 토큰을 만들 수 있다") @Test void generateToken() { //given 토큰에 유저 정보를 추가하기 위한 테스트 유저를 만듭니다 User testUser = userRepository.save(User.build..