Programming/Spring

·Programming/Spring
JWT 인증은 실제로 Filtter 를 통해 이루어집니다.JWTTokenProvider 에서 말했듯이 결국 인증은 UsernamePasswordAuthenticationFilter 에서 이루어집니다.또한 AuthenticationManager 에서 CustomUserDetailsService 로직을 실행하게 됩니다.1. JwtAuthenticationFilterpublic class JwtAuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; private final JwtTokenProvider jwtTokenProvide..
·Programming/Spring
JWT 토큰을 생성하는데 필요한 UserDetails 가 준비되었기 때문에 이제 JWT 토큰을 실제 생성하는 JWTTokenProvider 를 생성합니다.Spring Security 의 인증 절차는 UsernamePasswordAuthenticationFilter 에서 이루어집니다.해당 필터에는 doFilter() 와 attemptAuthentication() 이라는 추상 메서드가 존재하는데, 실제 인증 절차는 attemptAuthentication() 에 존재하는 것을 실제 확인할 수 있습니다. @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)..
·Programming/Spring
그럼 본격적으로 SpringSecurity 를 사용한 JWT 를 구현해보겠습니다. 해당 게시글에서는 구조 파악에 우선순위를 두어 예제를 실행했습니다.로그인 등의 인증을 위해 DB 에서 직접 ID, Password 를 가져와 처리할 수 있지만, 여러 정보들 중 제한적 내용만 이용한다는 단점이 있습니다.또한 Security 에서는 DaoAuthenticationProvider 에서 요청받은 유저의 ID, Password 와 저장된 ID, Password 를 검증하는 역할을 하고 있으며, 이를 위해 UserDetailService 와 협력합니다.즉, ID, Password 를 넘겨줄 수 있는 UserDetailService 가 필요합니다!1. UserDetails, UserDetailsService#UserD..
·Programming/Spring
JWT (Json Web Token) 은 현재 대부분의 인증 허가 관련해서 사용되는 기술입니다. 필요한 모든 정보를 한 객체에 담아서 전달하기에 JWT 하나로 많은 인증이 가능합니다. 또한 웹 표준을 따르기에 대부분의 언어가 이를 지원합니다.1. JWT 구조JWT 는 헤더, 페이로드, 시그니처가 "." 를 구분자로 하나의 토큰을 이룹니다.JWT 디버거해당 사이트에서 실제 JWT 와 해석된 형태를 확인해볼 수 있습니다.다음부터는 가장 간단한 JWT 예시를 들어 설명하겠습니다.2. JWT 생성TOKEN_TYPE = "JWT"@Autowiredprivate JwtProp jwtProp;@PostMapping("login")public ResponseEntity login(@RequestBody Authenti..
·Programming/Spring
RestTemplate 을 사용해서 요청을 할 때 계속해서 Error 500 Internal Server Error 가 발생했다.이를 해결한 방법에 대해서 작성해보도록 하겠다.RestTemplateUriComponents uriComponents = UriComponentsBuilder.fromUriString(baseUrl) .queryParam("IF", input.getIF()) .queryParam("id", input.getId()) .encode() .build();ResponseEntity response = restTemplate.exchange(uriComponents.toUriString(), HttpMethod.GET, httpHeaders, ExampleDto.class);위..
·Programming/Spring
양방향 연관관계public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private Long id; ... @OneToMany(mappedBy = "member") private List orders = new ArrayList(); ...}public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "order_id") private Long id; ... @ManyToOne(fetch = Fe..
·Programming/Spring
준영속 엔티티?한 마디로 persis context 가 더 이상 관리하지 않는 엔티티를 말한다.영속과 준영속 예시를 보며 비교해보자영속 엔티티 @Transactional public void cancleOrder(Long orderId) { //주문 엔티티 조회 Order order = orderRepository.findOne(orderId); //주문 취소 order.cancel(); } ... //Order.class public void cancel() { if (delivery.getStatus() == DeliveryStatus.COMP) { throw new IllegalStateException("이미 배송완료된 상품은..
·Programming/Spring
Errororg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.SQLGrammarException: Unable to build DatabaseInformation ..
행복한띠용이
'Programming/Spring' 카테고리의 글 목록 (4 Page)