본문 바로가기

전체 글155

스프링 시큐리티 + 소셜로그인 구현(1) - 앱 등록하고 키값 얻기 1. Google https://console.cloud.google.com/ 에 접속을 한다 위의 점 3개가 있는 화살표 부분을 클릭한다 새 프로젝트를 클릭한다 프로젝트 이름을 아무거나 짓고 만들기를 누른다 이 화면에서 왼쪽 막대기 3개를 누르고 API 및 서비스를 눌러준다 추가로 옆에 고정까지 해주면 좋다 API 및 서비스 화면으로 들어왔다. 왼쪽의 OAuth 동의 화면을 누르자 동의 화면에서 외부를 선택 후 만들기를 누른다 앱 등록 화면에서 필수값인 앱 이름, 사용자 지원 이메일, 개발자 연락처 정보를 입력하고 다음으로 넘어간다 여기에서는 승인된 도메인이 없어도 상관없다(테스트용 애플리케이션이기 때문, 실제 서비스에서는 필요) 범위에서 유저에게 받을 데이터를 정하는 것이다 범위 추가 또는 삭제를 눌.. 2022. 4. 18.
스프링 시큐리티 + 소셜로그인 구현(0) - 기본 정보 알기 Google, Facebook, Github, Kakao, Naver 전부 다 보여주겠다!! 내가 삽질해가며 얻은 결과들... 22년 중반의 글이다. 옛날 19 20년 글보고 베끼지 않았으니 안심해주세욧! 일단 시큐리티는 기본적으로 붙어있고, 게이트웨이를 쓰거나 모놀리식이라면 WebSecurityConfig에서 요청마다 인증을 필요/미필요하게 할건지 설정하는건 알거라 생각하므로... 넘어간다 스프링 시큐리티란? 인증, 인가를 기반으로 한 스프링 하위 프레임워크이다 인증(Authentication)은 간단히 말하면 로그인 인가(Authorization)는 간단히 말하면 내가 유저인데 어드민 권한으로 다른 사람의 계정 정보를 보거나 유저를 삭제할 수 없듯, 권한을 의미한다 OAuth(Open Authoriz.. 2022. 4. 14.
Axios 사용법 후론트엔드 글은 잘 안쓰는데.... 쓰려고한닷[ 나는 ES6를 좋아한다 ] 일단 클라이언트단에서 HTTP통신을 하기 위한 방법에는 Ajax, Fetch, Axios 3대장이 있다 위에 나온것처럼 Axios가 지원 브라우저도 제일 많고, XSRF(CSRF) 보안도 갖추고 있으며, response가 JSON type이며, Promise기반이기때문에 Call back hell을 막을 수 있다. CDN 방식 npm install 방식 npm install axios 파일 직접 다운로드 * ajax의 문제점 // Ajax 깊어진 callback 형태 ⇒ 알아보기 어려움 // Axios 알아보기 쉬워진 가독성 * interceptor로 요청, 응답 custom하기 const validate = (stat) => {.. 2022. 3. 30.
성장하는중 실력도 블로그도!! 아직 꼬꼬마지만 1000번이나 검색되다니...ㅎ 더 커져서 많이들어오면 좋겠다 2022. 3. 24.
Blocking/Non-Blocking & Sync/Async가 뭔데? 흔히들 글이나 그림으로 설명을 하기만 한다. 나는 그런 것보다 직접 눈으로 봐야 직성이 풀린다(기능 작성 or 테스트 코드) 자 그럼 WebClient와 함께 테스트를 해보겠다 Spring은 기본적으로 Blocking/Sync 방식으로 동작을 하고 Node.js가 Non-blocking/Async 방식으로 동작을 한다 비동기 방식은 순차처리를 지원하지않는다 순서가 중요한 처리는 동기방식으로 처리를 해야한다(또한 잠금이 필요한 경우) 비동기관련용어 - ajax, XMLHttpRequest, Callback, Promise... Blocking / Non-blocking 은 호출된 함수가 호출한 함수에게 제어권을 바로 주느냐 안주느냐, Sync / Async 는 호출된 함수의 종료를 호출한 함수가 처리하느냐.. 2022. 3. 23.
Java/SpringBoot 메일을 보내는 방법들 Google SMTP 사용 추가로 공부하세요~! 안타깝지만 제 블로그 글이 아님..ㅎ - SMTP, POP3, IMAP 차이 https://m.blog.naver.com/ijoos/221742035684 SMTP, POP3, IMAP 차이 이번에는 SMTP, POP3, IMAP의 차이에 대해서 배워보고자 한다. SMTP SMTP는 Simple M... blog.naver.com - SSL, TSL 차이 https://ko.gadget-info.com/difference-between-ssl SSL과 TLS의 차이점 SSL과 TLS 간에는 약간의 차이점이 있습니다. SSL은 목적을 달성하기위한 가장 중요한 접근 방법이며 모든 브라우저에서 지원됩니다. TLS는 보안 및 개인 정보 보호 기능이 강화 된 후속 .. 2022. 3. 23.
OAS(Open Api Specification) - Swagger 그룹화, 각각 인증 표시하기 https://junho85.pe.kr/1583 Swagger. Springfox-Swagger 그리고 Springdoc 요즘 스프링으로 프로젝트를 하면서 이런저런 지식들을 습득하고 있습니다. 예전에 스프링으로 프로젝트하시던 분들이 swagger를 이용해서 API문서를 만들던 것을 보고 swagger라는 것에 대해 듣게 junho85.pe.kr 일단 Swagger는 Springfox-swagger 2.x 3.x버전과 Springdocs-OpenAPI 두개의 버전이 있습니다! 둘다 사용하는 Bean이 다른데요. 위처럼 TEST-API / 인증이 필요한 API / 인증이 불필요한 API 이렇게 그룹화를 할 수 있습니다. TEST-API에는 공통적으로 쓰이는 API를 두면 좋겠죠?(ComponentScan 등.. 2022. 3. 21.
PostMan의 여~~~~러 가지 사용방법 스킨 색 변경하기 난 개인적으로 검은색을 선호한다 밤에 코딩해도 눈이 안아프고 뭔가 멋있짜놔~~ 우측 상단의 톱니바퀴를 눌러주자 Settings 클릭 후 테마에서 오른쪽 선택 사용방법 Collection을 만든다 Folder 또는 Http Request를 만든다 PathVariable, QueryString, ReqeustBody, Header/Authroization을 추가하는 방법을 익힌다 Tests에 js코드를 추가해서 포스트맨 전역, 환경 변수로 갖고 있는 방법을 익힌다 Import 또는 Export를 해서 다른 사용자한테 내 json 데이터를 넘겨주거나, 혹은 다른 사용자의 json 컬렉션 데이터를 받아올 수 있다 + 문서보기 0. Workspaces를 만든다 개인/팀별 작업 공간을 만들 수 있.. 2022. 3. 15.
DTO instantiate (feat. Lombok, GET/POST) 여러분들은 아마 DTO에 값이 어떻게 채워져서 컨트롤러 메서드 내부의 인스턴스화된 오브젝트로 넘어오는지 궁금하지않나요? 제가 완벽히는 아니더라도 아는만큼 써놓겠습니다 오브젝트(객체)가 메모리에 올라와서 접근 가능하고, 처리 가능하게 되는 것을 인스턴스화된 객체, 인스턴스라고 합니다. 그럼 DTO는 언제 인스턴스화가 될까요? 기본적으로 Get 방식과 Post 방식은 스프링에서 처리 방식이 다릅니다 (이 밑부터는 반..말체 ㅎ) 1. Get Request + DTO Get요청에서의 DTO들은 모두 다 QueryString으로 들어간다 QueryString이란 ?{Key}={Value}&[Key}={Value} 방식으로 들어간다는 것이다 어차피 스프링에서 DTO로 만들어도 포스트맨 등에서는 Query Para.. 2022. 3. 10.
IntelliJ Honey Tips 1. 멀티모듈) 프로젝트의 정보들이 너무 길 때 나는 이 프로젝트의 - ~/ 같은 경로도 보고 싶지 않고, 실제로 개발하다보면 깔끔함을 추구하고싶다 그럴때에는 여기 화살표를 눌러주자 그리고 패키지를 선택해주면! 난 이정도도 깔끔해진거같다! 또 다른 옵션으로는 프로덕션 / 테스트로도 볼 수 있다 실제로 테스트 코드만 볼 수 있다! 매우 좋음 짱짱 2. 멀티모듈, MSA 방식일때 내가 쓰고 있는 DTO가 어디에 있는건지 찾고 싶을 때가 있다. 파일은 열려잇는데, 이게 어느 모듈, 위치에 있는지 알고 싶을때가 있다. 이럴때 이 옵션을 체크하면 된다 이걸 체크해주면 현재 열려있는 파일이 어느 위치에 있는지 열리게 된다 현재 열려있는 AuthController를 프로젝트 경로에서 어디있는지 바로 열어준다 현재 C.. 2022. 3. 6.
Springboot local 환경에서 https 적용하기 라 말하고 사실 CA에서 인증받지 않은 짜가 인증서로...ㅎ 보통은 간단하게 하면 배포 전에 직접 인스턴스 서버에 들어가서 let's encrypt을 쓰던가 zeroSSL등 다른곳을 이용해서 인증서를 받을것이다 나는 keytool을 이용할것이다 자바폴더에 있기 때문에 윈도우는 bin 폴더에 환경 변수설정만, 맥은 기본적으로 잡혀있거나 아니면 .bashrc에다 추가해주면 된다 $> keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000 이름과 성을 입력하십시오. [Boki]: Boki 조직 단위 이름을 입력하십시오. [Boki]: Boki 조직 이름을 입력하십시오.. 2022. 3. 3.
Springboot Security SpEL 을 활용한 @PreAuthorize SpEL(Spring Expression Language)란? Spring expression language는 보통 SpEL로 표기하며 구두로는 스프링 EL이라고 지칭한다 인증은 각각 서비스에서 정해지는 방법이 있을것이고 filter나 interceptor에서 거를 거라고 생각하고 api호출시의 권한체크, @PreAuhorize의 여러 방법들에 대해서 알아보려고 한다 0. 인증이 필요하지 않을 경우 @PreAuthorize("isAnonymous()") 익명이라는 뜻이다. 이 경우 인증을 거치지 않더라도 동작한다 @PreAuthorize("isAnonymous()") @GetMapping("/test0") public String test0() { return "test0"; } 1. 인증이 필요할 경.. 2022. 2. 26.
AOP/(Rest)ControllerAdvice Log를 꾸며보자(feat. NPE 관리) 클릭하면 큰 화면으로 볼 수 있습니다 맨 위 쿼리는 P6Spy를 이용해서 보여진 쿼리다. 저거 아니면 log4jdbc를 이용해서 볼 수도 있다. 저건 의존성 추가하고 Config 설정만 몇개 해주면 되서 패스하겠다. 밑에 보면 AOP(Aspect)에서 컨트롤러, 서비스단에서의 정보들을 로깅하고있는 것을 볼 수 있다. 애초에 내가 맥북을 쓰기때문에 다른 로그들도 [날짜] [LEVEL] [숫자] - 정보로 색이 입혀져서 뽑히는데 원래는 하얀색만 나온다는 것을 명심하자~~!^-^ 저렇게 이뿌게 로그를 찍을라면 그냥 컬러를 주면서, 맞는 포인트컷, Around 설정과 jointPoint에서 정보를 가져오는정도만 코드를 작성해주면 된다. 추가로 커스텀예외에서 런타임으로 태워서 받는 Advice에서도 적용을 해 줄.. 2022. 2. 26.
JetBrains Live Template 활용하기 열심히 개발을 하고 있으면서 개발에 대한 내용을 쓰기보다 IDE활용을 올리는거같은기분이다... 저번주에는 회사동기가 단축키 잘쓴다고 하던데 기분이 좋았다 > for(String x : str) { } 추가로 마이바티스.xml의 위에 값들이 기억 안날수도있기에..ㅎ xml파일에서 mybatis라고 치면 이정도만 입력되게 해놧다 참고로 어느 ide에서나 다 있다 vscode에도 있을꺼다 근데 커스텀하기는 불편하다고 들었다 그럼 추가로 끝! 책에 대한 후기나, 개발 핫픽스적인 내용을 좀 올려야겟다..ㅎ 블로깅 넘 어려벙 2022. 2. 19.
Mac에서 백그라운드로 프로세서 실행해놓고 계속 쓰기(feat. jar) nohup java -jar port-8888.jar & lsof -i tcp:8888 음 사실 윈도우도 마찬가지긴한데.. & 명령어와 nohup을 이용하면 된다 자주 쓰일만한 어플리케이션 가볍게 계속 켜두고 싶어서 찾아보게 되었다 실행 내역은 nohup.out에 쌓이게 되어서 cat hohup.out으로 상태를 확인할 수 있다(동적이 아니고 실행 로그겠지만) 터미널이 꺼져도 실행되기 때문에 개꿀~ 어차피 집에서 쓰는거라 jar파일은 포트번호로 네이밍을 해줬다. 또 집에서만 쓸거라 /경로가 입력되면 request에서 서버포트 뽑아내서 localhost:port/swagger-ui/index.html로 리다이렉션 시켰다ㅋ 잘되는지 확인~ 예시 입력값은 프로그래머스의 '거리두기 확인하기'로 정했다 스웨거 확.. 2022. 2. 19.