본문 바로가기

웹 개발 한걸음

(61)
[OAuth2] 소셜 로그인 구현 방식에 대한 시행 착오 간만에 소셜로그인을 구현하게 되었는데 이번엔 스프링 부트 Oauth2 라이브러리를 쓰지않고 구현해보려고 했다. 나처럼 웹개발에 익숙하지 않은 사람들에겐 라이브러리가 마냥 좋은 것 같진 않다. 내부적으로 어떻게 굴러가는지 알기 어려울 때가 많고 자칫하면 가장 중요한 개념을 놓치기 쉬운 것 같다. 그냥 소셜 로그인하는데 쓰이는 거야~ 라고만 알고 라이브러리로 쉽게 구현한들 프로토콜에 대해 이해하지 못하면 제대로 된 개발자라고 될 수 있을까. Oauth2는 고객(Resource Owner)이 내 어플리케이션(Client)에 직접 그들의 소셜 아이디와 비밀번호를 주지 않아도 내 어플리케이션이 그들을 대신하여 소셜 서비스서버(Resource Sever)가 제공하는 고객의 자원(개인정보)에 대해 접근 권한을 위임 ..
[해결] CORS 에러 해결 (2) + 추가 https://egu99.tistory.com/89 [해결] Cors 에러가 왜 났나 했는데 요즘 바빠서 tistory에 개발 일기 못 적었는데 어이없는 실수라 기록해둠. cors는 예에에에전에 서버쪽에서 config로 처리 해두어서 그동안 문제없었는데 프론트에서 jwt 토큰을 가지고 서버에 요청 egu99.tistory.com 에서 그냥 해결이 났나 했었는데 사실 근본적인 해결이 난 게 아니었다. Access to XMLHttpRequest at '~~~~~~~~~' from origin '~~~~~~~~' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource...
[Git 입문] 2. Git의 주요 명령어 간단히 써보기 (feat.Sourcetree) 3. Git의 주요 명령어 1. git init Git저장소를 만드는 명령어이다. c:\에 있는 Git_Test라는 폴더에 Git 저장소를 만들었다. 실제 폴더에 가보면 .git이라는 폴더가 생성되었다. Git 저장소가 되어 Git이 관리하는 폴더가 되었다는 뜻이다. 2. git status Git이 관리하는 워킹 디렉토리의 상태를 확인하는 명령어이다. 위의 내용은 현재 브랜치는 '마스터'이고 아직 커밋 된 적이 없고 커밋할 게 없다. 라는 메시지이다. 2-1 라이프사이클 워킹 디렉토리의 파일은 크게 Untracked : 관리 대상이 아님 (Git이 모름) Tracked : 관리 대상 (Git이 알고 있음) 로 나눌 수 있다. 여기서 Tracked는 다시 Unmodified : 수정하지 않음. Modif..
[SQL] Left Join과 Inner Join 간단 정리 0. 관계형 데이터 베이스 Join은 관계형 데이터베이스의 꽃이라 불릴 정도로 중요한 연산자이다. 관계형 데이터베이스는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장한 데이터베이스 모델이다. Join은 이렇게 쪼개둔 테이블들을 목적에 따라 다시 합쳐 원하는 결과를 얻어내고자 사용한다. 예시로 이렇게 쪼개둔 A테이블과 B테이블이 있다하자. 1. Inner Join Inner Join은 A테이블과 B테이블 모두에서 존재하는 행을 모아 하나의 행을 만드는 방법. A와 B의 교집합을 얻을 수 있다. 2. LEFT Outer Join Left Outer Join을 많이 써서 LEFT로 예시를 둠. Left join은 기준이 되는 테이블을 왼쪽에 두고 이를 기준으로 다른 테이블을 합성하여 하..
[OAuth2.0] 소셜 로그인 구현하기 -4- 카카오, 네이버, 구글 로그인 [OAuth2.0] 소셜 로그인 구현하기 -1- OAuth란? [OAuth2.0] 소셜 로그인 구현하기 -2- 카카오 어플리케이션 등록 [OAuth2.0] 소셜 로그인 구현하기 -3- 카카오 로그인 [OAuth2.0] 소셜 로그인 구현하기 -4- 카카오, 네이버, 구글 로그인 ** 생각보다 정리가 오래 걸렸다 ㅜㅜ ** 이번엔 scribejava라는 라이브러리를 이용해 카카오 뿐만 아니라 네이버, 구글 로그인도 같이 만들어볼 것이다. 동작 방식이나 필요한 파라미터들은 앞의 글들에서 다뤘으므로 구현 위주로 작성할 것이다. 1. 라이브러리 추가 com.github.scribejava scribejava-apis 2.8.1 com.github.scribejava scribejava-core 2.8.1 pom...
[OAuth2.0] 소셜 로그인 구현하기 -2- 카카오 어플리케이션 등록 [OAuth2.0] 소셜 로그인 구현하기 -1- OAuth란? [OAuth2.0] 소셜 로그인 구현하기 -2- 카카오 어플리케이션 등록 [OAuth2.0] 소셜 로그인 구현하기 -3- 카카오 로그인 [OAuth2.0] 소셜 로그인 구현하기 -4- 카카오, 네이버, 구글 로그인 ** 카카오를 통해 OAuth2.0 소셜 로그인을 구현해보려고 한다. 요즘 각종 라이브러리들이 많지만 이번엔 라이브러리 없이 구현하였다. 0. db 테이블 재설계 혹여나 이전글들을 보고 이 글을 본다면(그럴 리는 없겠지만) 기존의 DB의 user테이블을 전면 수정하였다. 소셜 로그인에서는 소셜 서비스의 서버로부터 이메일을 받아올 것이므로 기존 방식에서도 아이디 대신 이메일로 로그인하며 회원끼리의 구분은 소셜구분+소셜고유키값+이메일로..
[OAuth2.0] 소셜 로그인 구현하기 -1- OAuth란? [OAuth2.0] 소셜 로그인 구현하기 -1- OAuth란? [OAuth2.0] 소셜 로그인 구현하기 -2- 카카오 어플리케이션 등록 [OAuth2.0] 소셜 로그인 구현하기 -3- 카카오 로그인 [OAuth2.0] 소셜 로그인 구현하기 -4- 카카오, 네이버, 구글 로그인 0. 소셜 로그인? 지금 각종 서비스를 이용하기 위해 여러 웹 사이트를 들어가보면 많은 곳에서 "구글로 로그인", "카카오로 로그인", "네이버로 로그인" 등을 쉽게 볼 수 있다. 이는 해당 서비스를 위해 별도의 번거로운 회원가입 절차를 진행하지 않고도 이미 가지고 있는 카카오 계정, 페이스북 계정, 구글 계정, 일명 "뿌리 계정"으로 간편하게 서비스를 이용할 수 있도록 해주는 기능이다. 서비스별로 아이디와 암호를 모두 외우는 대신..
[Spring+Mybatis] 로그인 구현하기 ** 이전에 만들어두었던 servlet 기반의 MVC 프로젝트를 spring으로 다시 구현해보았다. 사실 Spring 첫 셋팅 방법과 DI&IoC컨테이너부터 포스팅해야하는데.. 이것부터 올려본다. [Mybatis + Ajax] 로그인 구현 해보기 ** 이전에 만들었던 서블릿 프로젝트에서 JDBC가 아닌 Mybatis 프레임워크를, html의 submit 전송이 아닌 jquery를 이용한 ajax 통신을 사용해 로그인을 구현해보았다. [Servlet] 로그인 구현하기 ** 이전에 egu99.tistory.com 1. 스프링에서 Mybatis를 쓰려면 (1) Mybatis 라이브러리가 필요하다. mybatis, mybatis-spring, commons-dbcp, mysql-connector (DB를 mys..