Spring Boot 15

Spring boot 구글로그인 및 자동 회원가입 마무리

일단 두가지를 먼저 테스팅해볼 예정이다. 1. PrincipalDetails에서의 User정보 @GetMapping("/test/login") public @ResponseBody String testLogin( Authentication authentication, @AuthenticationPrincipal PrincipalDetails userDetails) { System.out.println("userDetails ============== "); PrincipalDetails principalDetails = (PrincipalDetails) authentication.getPrincipal(); System.out.println("authentication: " + principalDetai..

Spring Boot 2023.06.08

Spring Boot 구글 로그인 프로필 정보 받아오기

일반적으로 클라이언트에서 회원가입 로그인을 시도하게되면 서버에서는 코드(인증)와 액세스 토큰(권한)을 받고 사용자 프로필 정보를 가져와 그 정보를 토대로 회원가입을 자동으로 진행시키기도 한다. 그러나 구글로그인의 경우 코드를 받는게 아닌 액세스토큰과 사용자 프로필 정보를 함께 받게 되는데 이것이 oauth클라이언트 라이브러리의 장점이다. 먼저 SecurityConfig 에서 SecurityFilterChain에서 OAuth2 클라이언트 라이브러리를 build해주도록 하자. SecurityConfig @Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터 체인에 등록됨 @EnableGlobalMethodSecurity(securedEnabled = true, ..

Spring Boot 2023.06.08

Spring Boot OAuth 구글 로그인

웹 페이지들을 보면 일반적인 회원가입과 로그인이 있지만, 간편하게 이용할 수 있는 구글 로그인, 카카오 로그인 등 oauth로그인이 존재한다. 이는 각 개발자 플랫폼에서 api를 통해 간편 로그인을 만들어 줄 수 있는데 대표적으로 구글 로그인에 대해서 알아보도록 하자. Google Api Key 생성방법 먼저 구글 개발자 플랫폼으로 이동하자 https://console.cloud.google.com/cloud-resource-manager Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 처음 생성한다면 위와 같이 비어있으니 프로젝트 만들기를 눌러 새로 생성해주도록 하자 프로젝트 이름은 각자 알아서 지어주고 그대로 만들기를 누르면 된다. 프로젝트..

Spring Boot 2023.06.07

Spring Boot Security 권한 정리 (authorizeRequests, secured, preAuthorize)

Spring Security에서는 특정 권한을 가진 user만 해당 페이지로 이동할 수 있게끔 권한을 부여하는 방법이 있다. 가장 보편적인 방법으로는 authorizeRequests로 글로벌적으로 걸어주는 방법이 있고, 특정 컨트롤러에만 걸어주고 싶다면 secured를 사용하거나 preAuthorize를 사용할 수 있다. authorizeRequests 먼저 글로벌적으로 권한을 걸 수 있는 authorizeRequests이다. 이는 SecurityFilterChain에서 filter로 글로벌 적으로 권한을 설정하는 방법으로 앞서 Bean에 등록했었지만 다시한번 보도록하자 @Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터 체인에 등록됨 @EnableGlo..

Spring Boot 2023.06.05

Spring Boot Security 로그인

form로그인 형식으로 Security 로그인을 하는 방법에 대해서 알아보자 이전에 SecurityConfig에서 SecurityFilterChain 을 Bean에 등록해줬는데 여기서 loginpage와 login action을 설정해줄 수 있다. SecurityConfig @Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터 체인에 등록됨 public class SecurityConfig { @Bean public SecurityFilterChain filter(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/user/**").aut..

Spring Boot 2023.06.05

Spring Boot Security 회원가입 Form

간단한 회원가입 Form을 만드는 과정이다. 먼저 Controller 는 loginForm과 joinForm , join 세 가지를 만드는데 loginForm은 로그인페이지 및 로그인, joinForm은 회원가입페이지 join은 회원가입 진행 (POST)을 만듭니다. 패키지 및 클래스 join 쪽에서 해줘야 할 일은 회원가입 진행인데 회원가입은 id, password, email 세가지를 위 joinForm 에서 만들었다. 필요한건 User를 담을 클래스와 create 해줄 UserRepository 인터페이스가 필요하다. JPA를 사용할 것이기 때문에 기존에 Service와 mapper형식이 아닌 JpaRepository를 extends하여 인터페이스를 만들것이다. model패키지 내의 User 클래스..

Spring Boot 2023.06.02

Spring Security SecurityFilterChain 설정

Spring Security에서 URL + /login을 하게되면 Spring Security에서 제공해주는 로그인 Form을 클라이언트에 띄워준다. 로그인 Form 클라이언트를 제공받아 쓰는것이 아닌 직접 커스텀해서 쓰려면 기본적인 설정이 필요하다. 먼저 Config 에 SecurityConfig Class를 생성해준다. 기존에는 WebSecurityConfigurerAdapter를 extends 하여 overide하는식으로 등록해줬으나, 스프링 부트가 업데이트 되면서 Deprecated됨에 따라 SecurityFilterChain을 Bean에 등록하여 만들어주는 방식을 사용합니다. 기존 WebSecurityConfigurerAdapter 를 extends하는 방식 (비추천) @Configuration..

Spring Boot 2023.06.01

SpringBoot Security 설정(application.yml 및 mustache)

Security를 함에 앞서 기본적으로 controller에서 tempaltes의 웹 브라우저를 return해주는 설정을 알아볼 예정이다. 먼저 application.yml 설정이다. 초기에 application.properties로 돼있는 파일을 application.yml로 바꿔주면된다. 이후 아래와 같이 port를 지정해준다. 필자는 8000 port를 쓰지만, 보통 8080을 많이쓴다고 한다. server: port: 8000 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true mustahce는 기본적으로 dependency가 있어야 하기 때문에 아래 dependency를 pom.xml에 추가해준다. org.spr..

Spring Boot 2023.05.31

REST API 와 API 의 뜻

REST API를 설명하기에 앞서 먼저 API라는 용어는 무엇인지 알아보자. API라는 용어는 개발하면서 한번쯤은 들어봤으나 설명하라고 하니 말로 표현하기가 어려운 느낌이다. 지도 API, 결제 API 등등 편하게 쓰이지만 정작 어떤 용어인지 설명하라면 말문이 막혀서 이참에 한번 정리를 해보고자 한다. API란? API(Application Programming Interface)는 응용프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어에서 제공하는 기능을 제어할 수 있도록 하는 인터페이스를 말한다. 이렇게 말하면 어려우니 자판기를 통해 API를 알아보도록 하자. 일상생활에서 음료수나 기타 먹을거리를 간편하게 이용할 수 있는 자판기는 일반인 입장에서는 이 자판기가 돈을 넣고 버튼을 누르고 해당 음료..

Spring Boot 2023.02.21

웹의 동작, HTTP 프로토콜이란

HTTP(Hypertext Transfer Protocol) http는 우리가 원하는 홈페이지를 찾아가기 위해 주소창에 http://~ 이런식으로 시작하게 된다. 웹에서는 서로 통신하기 위해 HTTP를 사용하기 때문이며 이는 서버와 클라이언트에서 데이터를 주고받기 위한 프로토콜이기도 하다. 또한 HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계되어 있다. 우리가 클라이언트에서 요청을 보내고, 이를 응답하면 데이터가 전달된다. 전달된 데이터는 모두 브라우저에 표현하기 위한 것이다. 즉 들어온 데이터들이 html안에서 형식을 지켜서 쓰이는데, 이는 전부 텍스트로 이루어져 있다. 그래서 원래는 Servlet에서 request.getParameter하면 문자를 보내든 숫자를 보내든 전부 String으로 들..

Spring Boot 2023.02.16