Programming

·Programming/Spring
추가 작업으로 일정한 Response 형식을 반환하고 ExceptionHandler 를 추가하겠습니다.1. BaseResponsedata class BaseResponse( val resultCode: String = ResultCode.SUCCESS.name, val data: T? = null, val message: String = ResultCode.SUCCESS.msg,)응답은 다음과 같이 나타낼 것입니다. Data 와 message 를 분리하고 Exception 에 Custom message 가 정확하게 뜨는 것을 예상합니다.2. ExceptionHandler@RestControllerAdviceclass CustomExceptionHandler { @ExceptionHa..
·Programming/Spring
구조를 우선적으로 파악한 이후 Kotlin 으로 컴팩트하게 JWT Token 처리를 진행해보겠습니다.1. CustomUserDetails, CustomUserDetailsServiceclass CustomUser( val userId: Long, userName: String, password: String, authorities: Collection) : User(userName, password, authorities)@Serviceclass CustomUserDetailsService( private val memberRepository: MemberRepository,) : UserDetailsService { override fun loadUserByUsernam..
·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' 카테고리의 글 목록 (5 Page)