본문 바로가기

Web App121

Spring Security 로그인 구현 (part 3) - OAuth2.0 Spring Security 로그인 구현 (part 3) - OAuth2.0 지난 시간까지는 Form 로그인에 대해서 ( Spring Security 로그인 구현 (part1) - form login, Spring Security 로그인 구현 (part1) - form login ) 알아보았습니다. 하지만 우리가 자주 사용하는 로그인의 또 다른 방식으로 OAuth 로그인이 있습니다. 구글 같은 소셜서비스를 이용해 대신 로그인을 해서 서비스를 사용해본 적이 있으신가요? OAuth 로그인 방식으로 이를 가능하게 할 수 있습니다. OAuth2.0 에 대한 자세한 내용은 이 글(OAuth 2.0 설명)에 포스팅 해놓았습니다. 참고바랍니다. 우리는 서비스 서버에서 OAuth 로그인을 어떻게 구현하는지 알아봅시다... 2021. 5. 9.
OAuth 2.0 설명 OAuth2.0 OAuth란? 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. (wikipedia) 즉, 서비스별 제각각인 인증방식을 표준화한 인증방식이다. 다르게 표현하면 서드파티를 사용하지 않고, API 에 접근할 수 있도록 하는 개방형 표준 프로토콜이다. OAuth 사용 사례 구글, 페이스북과 같은 서비스 API 에 사용자 대신 접근하고 싶을 때 다른 서비스로 로그인 하기 기능을 구현하고 싶을 때 이제 대략 6단계에 거쳐서 OAuth 의 인증절차를 차근차근 알아보자. 1. OAuth 2.0 용어 정리 사용자 (Resource Owner) : 애플.. 2021. 5. 9.
Spring Security 로그인 구현 (part 2) - form login Spring Security 로그인 구현 (part 2) - form login 본 글은 Spring Security 로그인 구현 (part 1) - form login 과 이어지는 글 입니다. 이전 글에서 회원가입 후 회원정보를 DB 에 담기 로그인 기능 구현 을 했습니다. 하지만, 로그인의 경우 기본 스프링이 제공해주는 user 라는 아이디와 콘솔창에서 제공해주는 패스워드를 사용해 로그인이 가능했었습니다. 이번 글에서는 DB에 저장된 사용자 아이디, 비밀번호를 비교하여 로그인 인증을 처리하는 방법을 서술합니다. 사용자이름 검증하기 로그인 정보를 입력하고 post 요청을 하면, 이 때 전달한 username을 받아올 수 있습니다. 받아온 username은 DB에 저장된 유저이름과 비교합니다. 유저이름을.. 2021. 5. 9.
Spring Security 로그인 구현 (part 1) - form login Spring Security 로그인 구현 (part 1) - form login 많은 서비스에서는 특정 사용자별로 할 수 있는 일이 다릅니다. 예를 들어, 네이버 밴드의 멤버탭을 들어가면 Admin, Co-Admin 권한을 특정 사람에게 부여할 수 있습니다. 이 들을 밴드 안의 글을 관리하고, 멤버를 초대하는 등의 역할을 할 수 있습니다. 이 글에서는 권한을 구현하기 위한 가장 기초, 회원가입과 로그인을 구현해보겠습니다. 회원가입 페이지 구성 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-s.. 2021. 4. 24.
Spring Web MVC - @ResponseBody, ResponseEntity Spring Web MVC - 핸들러 메소드 4 @RequestBody @RequestBody 는 핸들러의 아규먼트로 받아 올 수 있다. 요청 본문(body)에 들어있는 데이터를 HttpMessageConverter를 통해 변환한 객체로 받아올 수 있다. HttpMessageConverter : 스프링 MVC 설정 (WebMvcConfigurer) 에서 설정할 수 있다. 이 때 configureMessageConverters 를 오버라이딩하면 기본 메시지 컨버터를 대체하게 되어, 기본설정이 바뀔 수 있으므로 조심한다. 대신 extendMessageConverters 를 이용하면 원하는 메시지 컨버터를 추가할 수 있다. (객체를 XML으로 바꾼다든지) 기본 컨버터는 WebMvcConfigurationSup.. 2021. 2. 21.
Spring Web MVC - 파일업로드, 파일다운로드 Spring Web MVC - 파일업로드, 다운로드 파일 업로드 - MultipartFile MultipartFile 은 파일 업로드시 사용하는 메소드 아규먼트이다. MultipartResolver 라는 빈이 설정 되어 있어야 사용이 가능하다. 단, 스프링부트는 자동 설정이 되어있다. 이를 사용하면 POST 요청의 multipart/form-data 정보에 들어있는 파일을 참조할 수 있다. 간단한 파일업로드를 구현해보자. @Controller public class FileController { @GetMapping("/files") public String fileUploadForm(Model model) { return "files/index"; } @PostMapping("/files") publi.. 2021. 2. 21.
Spring Web MVC - Attributes, 멀티 폼 서브밋 Spring Web MVC 009 - 핸들러 메소드 3 SessionAttributes 모델 정보를 HTTP 세션에 저장해주는 어노테이션이다. 먼저 HttpSession 을 보자. 핸들러 메소드의 아규먼트로 받아와서 세션을 관리할 수 있게 도와주는 객체이다. 상대적으로 low 레벨 단위의 코딩을 할 수 있다. @GetMapping("/news/form") public String newsForm(Model model, HttpSession httpSession) { News news = new News(); news.setLimit(10); model.addAttribute("news", news); // 세션안에 news 라는 이름으로 객체를 넣어준다. httpSession.setAttribute("n.. 2021. 2. 21.
Spring Web MVC - ModelAttribute, 폼 서브밋 Spring Web MVC - 핸들러 메소드 2 @ModelAttribute @Controller public class NewsController { @PostMapping("/news") @ResponseBody public News news(@ModelAttribute News news) { return news; } } @Test public void postNews() throws Exception { mockMvc.perform(post("/news") .param("title", "blue") .param("limit", "10")) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("title").value("blue")) ;.. 2021. 2. 21.
Spring Web MVC - Handler 아규먼트 다루기 Spring Web MVC - 핸들러 메소드 핸들러 메소드에서 다양한 아규먼트를 사용할 수 있다. 핸들러 메소드 아규먼트 설명 WebRequest NativeWebRequest ServletRequest/Reponse HttpServletRequest/Reponse 요청 또는 응답 객체에 접근 가능한 API InputStream Reader OutputStream Writer 요청 본문을 읽어 오거나, 응답 본문을 쓸 때 사용할 수 있는 API PushBuilder Spring 5에 추가됨. HTTP/2에서 사용할 수 있다. 리소스 푸쉬에 사용된다. 일반적으로 일어나는 HTTP 요청 : 1 클라이언트가 뷰 요청 2 서버 응답 (이 때 뷰에 다른 리소스 자원이 있어서 불러오고 싶음) 3 클라이언트가 이미지.. 2021. 2. 17.
Spring Web MVC - RequestMapping Spring Web MVC - 요청 매핑 HTTP Method HTTP 메소드에는 GET, POST, PUT, PATCH, DELETE 등이 있다. 예제를 하나 만들어보자. 컨트롤러 @Controller public class BookController { @RequestMapping(value = "/bookstore") @ResponseBody public String bookStore() { return "Welcome book store"; } } 테스트 코드 @WebMvcTest class BookControllerTest { @Autowired MockMvc mockMvc; @Test public void bookStoreTest() throws Exception { mockMvc.perfor.. 2021. 2. 15.