목록개발 (28)
종우의 삶 (전체 공개)

Spring Security를 한동안 계속 알아보고 있다. 이번 포스트에서는 다시 한번 Spring Security의 로그인(JWT를 통한 인증, 인가) 과정을 살펴볼 것이다. Security 자체에서 숨겨진 채로 진행되는 것들이 많다보니 잘 알아차리기 힘들다. 하지만 이 과정을 어느정도 이해할 수 있어야 Spring Security 관련된 기능들을 자유롭게 사용이 가능할 것이다. 1. Spring Security의 인증 과정 우선 Spring Security Authentication (인증) 기본적인 설정은 아래와 같다. (출처 : https://docs.spring.io/spring-security/reference/servlet/architecture.html#servlet-architecture..
뜬금없지만 java에 대한 내용이다 우리가 자주쓰는 stream, map에 대한 이야기를 적어보려 한다. public String createToken(Authentication authentication) { String authorities = authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.joining(",")); long now = (new Date()).getTime(); Date validity = new Date(now + this.tokenExpirationTime); return Jwts.builder() .setSubject(authentication.getN..
단순 회원가입, 로그인보다 기능이 더 많은 프로젝트를 시작한다. + 주문, 주문 확인, 장바구니, 장바구니 확인 같은 세부 기능들이 추가되었다. 바로 이전에 진행했던 프로젝트를 토대로 작성해본다. 버전이 약간 다르므로 (JAVA 11, Spring boot 2.7.16) 차이가 있을 수 있으나 현재까지 다른 것은 느끼지 못했다. 하나의 궁금증이 생겼는데, 회원가입을 진행할 때 권한을 설정하는 부분이 있다. 서비스 코드를 살펴보자. public CustomerDto register(CustomerDto customerDto) { checkUserInfo(customerDto.getCustomerName(), customerDto.getEmail(), customerDto.getPhoneNumber()); ..

대상 Repository : https://github.com/Jonggae/security 코드에 대한 코멘트는 commentary 브랜치에서도 확인할 수 있습니다. https://github.com/Jonggae/security/tree/feature/6/commentary 참고자료: 인프런 Jwt 관련 영상 (github 코드 포함) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt 회원가입을 완료하였으므로 로그인을 진행해보자. 가장 어려웠던 부분이었으므로 자세히 정리해본다. ■ Spring Security에서 JWT를 이용한 로그인 ■ 1. 로그인 - JWT 기능 준비하기 기본적으로 Spring Sec..

대상 Repository : https://github.com/Jonggae/security 코드에 대한 코멘트는 commentary 브랜치에서도 확인할 수 있습니다. https://github.com/Jonggae/security/tree/feature/6/commentary 참고자료: 인프런 Jwt 관련 영상 (github 코드 포함) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt Security는 추상화가 아주 많이.. 되어있어 나같은 초보 개발자는 한번에 파악하기 힘들다. SpringSecurity 내의 클래스들을 확인하고, 어떻게 구현되는지 살펴볼 필요가 있을것이다. 쉽지는 않겠지만, 여러 정보들..
대상 Repository : https://github.com/Jonggae/security Security와 관련된 내용들을 연습한다. 목표 기능 1. H2 인메모리 DB를 이용한 회원가입 데이터의 저장 -> 사용자는 회원가입 과정에서 username, password, email을 입력하며, password는 암호화되어 DB저장 된다. 연습 프로젝트이므로 인메모리 데이터베이스를 이용하여 쉽게 휘발되는 데이터 저장을 진행한다. 2. 회원가입 후 로그인 -> 회원가입후 로그인을 하려면 인증에 필요한 토큰을 발급받아야 한다. Spring security를 이용하여 로그인 과정을 구현한다. username 과 password를 서버에 전송하면 DB내에서 올바른 정보인지 확인한 후, Jwt토큰을 발급한다. b..

로그인 구현 과정에서 진행이 잘 되지않으므로, 현재까지의 내용을 정리해보자. 1. Spring Security 의 전체 프로세스? 자주 봤던 그림이다. 스프링 시큐리티의 정확한 프로세스를 다시 한번 정리하고 막혔던 부분을 진행해보자. Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Contorller로 분배된다. https://mangkyu.tistory.com/18 (출처) [Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정 이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)..
스프링 시큐리티 관련하여 이전과 달라진 부분들을 정리해본다. 약 6개월 전만 하더라도 이렇게 쓰는 방식이 아니었던 것 같은데, 최신 스프링 시큐리티에서는 많은 부분들을 람다형태로 바꾸는 방법을 채택한 것 같다. 예를들어 h2-console에 접속하기 위해서 h2-console 경로를 허가해주고 .requestMatchers("/h2-console/**").permitAll() 잘 표시되지 않는 부분들을 xframe 옵션을 사용하지 않음으로 바꾸어야하는데 기존의 스프링은 http.headers() .frameOptions().disable(); 이렇게 진행을 했다면 (아마 많이 보았을 것이다) 같은 기능을 수행하기 위해 http.headers( headers -> headers.frameOptions(He..