개발 (38) 썸네일형 리스트형 #1) Spring Security Oauth2 Client + Apple 로그인 연동하기 이번에 인증 서버를 구축하면서 총 5개의 SNS 연동을 진행했다. (카카오, 네이버, 페이스북, 구글, 애플) 카카오, 네이버, 페이스북, 구글은 Spring Security Oauth2 Client로 연동하는 레퍼런스가 많아서 수월하게 진행했는데 애플은 다른 Provider(제공자 : 예를 들면 카카오, 네이버)의 OAuth2 인증방식과 다른 방식으로 사용자 정보를 넘기고 있어서 레퍼런스도 없고 해외에도 연동 예제가 없었다. 그래서 그냥 라이브러리를 분석해서 나의 방식대로 애플을 연동했는데 애플 로그인을 Spring Security Oauth2 Client에 연동하고자 하는 이들이 있으면 도움이 되고 싶어서 그 과정을 기록하고자 한다. 먼저 대부분의 Provider는 다음 그림과 같은 방식으로 동작한.. JWT(Json Web Token) 를 알아보자 JWT란? JWT는 JSON 객체를 사용해서 유저를 인증하고 식별하기 위한 토큰기반 인증이다. 토큰 자체에 정보를 포함하고 있으며 세션처럼 서버에 저장할 필요가 없고 요청시 HTTP 헤더에 토큰을 첨부하면 데이터 요청과 응답을 할 수 있다. JWT는 JSON을 Base64 URL-safe Encode를 통해 인코딩해서 직렬화하며 위변조 방지를 위한 전자서명이 포함된다. 개인키(시크릿키)를 통해 검증을 하며 검증이 완료되면 요청한 응답을 돌려준다. JWT로 로그인을 구현한다면 다음과 같은 순서로 진행된다. 1. 클라이언트가 아이디와 패스워드를 입력 후 인증 2. 서버에서 아이디와 패스워드가 정확하다면 서명된(Signed) JWT을 생성 후 클라이언트에 전달 3. 로그인 성공 후 클라이언트가 서버를 호출할 .. 웹훅(webhook)에 대해서 웹훅은 '역방향 API' 라고도 한다. 이는 웹훅 서버에 어떠한 이벤트가 발생했을 때 클라이언트를 호출한다. 일반적인 API는 클라이언트가 서버를 호출하면 그에 맞는 응답을 서버가 주는데 반대라고 보면된다. 사용하는 이유 만약에 A쇼핑몰에 신규회원이 등록되면 B업체에서 감사하다는 메일을 보내주기로 했다. 그렇다면 B업체는 A쇼핑몰에 주기적으로 신규회원이 있는지 확인하는 API를 호출해서 신규회원이 있다면 메일을 보내고 없다면 다시 신규회원이 있는지 주기적으로 API를 호출해서 확인할 것이다. 만약 웹훅을 사용한다면 이러한 다량의 API 호출을 줄일 수 있다. A쇼핑몰에서 신규회원이 등록되면 웹훅으로 B업체 CallBackUrl을 호출하여 신규회원이 등록되었다는 정보를 준다. 그럼 B업체는 그 호출에 대해.. JAVA에서 volatile란 무엇인가!? 캐싱을 해야하는 새로운 기능을 개발하는 작업중에 만난 누군가가 작성한 아래의 코드를 보면 volatitle이라는 키워드로 선언한 변수가 있다. volatitle이 뜻하는 바는 무엇인가? 이는 자바 코드의 변수를 '메인 메모리에 저장'할 것을 명시할 때 사용된다. 멀티 쓰래드 어플리케이션에서 각 쓰래드들은 성능적이 이유로 메인 메모리로 부터 변수를 읽어 CPU 캐시에 복사하고 작업하게 되는데 이 키워드를 명시한 변수는 컴퓨터의 메인 메모리로 부터 읽히고 변수에 대한 쓰기 작업은 메인 메모리로 직접 이루어진다. volatile를 선언하지 않은 변수들은 어느 시점에 JVM이 메인 메모리로 부터 데이터를 읽어 CPU 캐시로 읽어 들이거나 혹은 CPU 캐시들에서 메인 메모리로 데이터를 쓰는지(write) 보장해 .. 리눅스 연습하기 #3 ) 기본 명령어 tab : 자동완성 history : 사용했던 명령어 보기 history -c : 기억되었던 명령을 모두 삭제 cat : 파일 내용을 출력 ls는 List의 약자로 해당 디렉터리에 있는 파일의 목록을 나열한다. ls -a : 현재 디렉터리의 목록(숨김 파일 포함) ls -l : 현재 디렉터리의 목록을 자세히 보여줌 = ll 명령어 ls *.txt : 현재 디렉터리의 목록 중 확장자가 txt인 목록을 보여줌 ls a* : 현재 디렉터리의 목록 중 앞 글자가 a인것의 목록을 보여줌 cd는 change directory의 약자로 디렉터리 이동하는 명령어다. cd : 현재 사용자의 홈 디렉터리로 이동. root면 /root로 이동 cd .. : 상위의 디렉터리로 이동 cd ../etc/sysconfig : 현재.. 리눅스 연습하기 #2 ) vi 명령어 vi에디터에 쓰이는 명령어 vi : vi에디터(텍스트편집기) 실행 - vi test.txt 입력하면 test.txt 파일이 열리고 없으면 생성된다. a 혹은 i : 입력모드 실행 -> 텍스트 입력 가능 상태로 변함 esc : 명령모드 실행 :wq : 저장 후 종료 :q! : 저장하지않고 종료 :q : 종료 shift + g : 문서 제일 맨끝으로 커서 이동 gg : 문서 제일 처음으로 커서 이동 숫자 + shift + g : 해당 숫자의 줄로 커서 이동 ctrl + f : 다음 화면으로 이동 (page down과 같은 의미) ctrl + b : 이전 화면으로 이동(page up과 같은 의미) ^(shift + 6) : 현재 행의 처음으로 이동 %(shift + 5) : 현재 행의 마지막으로 이동 dd :.. 리눅스 연습하기 #1 ) docker를 이용해 CentOS 구축 필자가 일하는 회사에서는 aws를 이용해 서버를 구축해놓았고 서버 모두 centOS로 되어있다. 본래 다른 프로젝트를 하고있다가 이제 팀 프로젝트에 참여하므로 리눅스를 공부해야 할 필요성을 느꼈다. log파일을 확인하고, 서버를 내리고 올리고하는 등등의 작업을 linux를 통해 하기때문에 명령어 연습을 하는게 좋을 것 같다는 생각이 들었다. 먼저 연습을 위한 리눅스 서버를 만들어보자! 팀 프로젝트 서버환경에 맞게 CentOS 7버전으로 구축하고자 한다. 1. 이미지 다운로드 docker pull centos:7 2. 컨테이너 실행 docker run -i -t centos:7 /bin/bash 3. 패키지 업데이트 yum update 퍼시스턴스 프레임워크(Persistence Framework)와 mybatis 퍼시스턴스(persistence)는 영속성이란 뜻으로 영어단어 뜻처럼 지속됨 이라는 뜻이다. 데이터를 생성한 프로그램의 실행이 종료되도 사라지지않는 데이터의 특성을 의미한다. 영속성을 가지지 않는 데이터는 단지 메모리에 존재해 프로그램이 종료되면 없어진다. 데이터가 영속성을 가지려면 파일 시스템, 데이터베이스를 활용해 구현하면 된다. 퍼시스턴스 프레임워크(Persistence Framework)는 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합이고 간단한 작업으로 데이터베이스와 연동되는 시스템을 개발하고 안정적인 구동을 보장하므로 JDBC프로그래밍의 복잡함과 번거로움을 해소해줄 수 있다. · 종류 - SQL문장으로 직접 DB데이터를 다루는 SQL 맵퍼 - 자바 객체를 통해 간접.. 이전 1 2 3 4 5 다음