개요 프로젝트를 진행하면서 소셜 로그인을 통해서 간편 로그인을 만들었다. 이번 포스팅에서 카카오 로그인을 React - Spring Boot간의 REST API로 구현하는 방법에 대해서 소개하겠다. 본론 카카오 developers에 정보 등록하기 먼저 카카오 developers에 가입해서 현재 프로젝트 애플리케이션을 등록해주어야한다. Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 카카오 developer에 로그인해준 후 내 애플리케이션으로 들어간다. 그 후 애플리케이션 추가하기 버튼을 눌러 애플리케이션에 대한 정보들을 기입해준다. 이때 기입한 ..
전체 글
창의의 개발블로그입니다.개요 프로젝트를 진행하던 도중 MAC OS에서 AWS에 접속하려고 했더니 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!이 발생해서 접속이 안된다. 본론 위의 메시지를 번역해보면 “누군가가 나쁜짓을 할 수도 있습니다! 지금 누군가가 당신을 도청하고 있을 수 있습니다. (MITM attack) 호스트 키가 방금 변경된 것일 수도 있습니다.” 이렇게 들어서는 그냥 누군가가 통신을 도청하고 있을 수 있다는 뜻 같다. 이 오류는 SSH 클라이언트가 이전에 연결한 호스트와 현재 연결하려는 호스트의 식별자가 다른 것을 감지했을 때 발생합니다. 이전에 ssh 연결을 했던 호스트와 다른 호스트에 같은 키를 사용하여 연결하려고 할때 발생하는 것 같습니다. 이전 EC2를 제거하고 새..
개요 intellij에서 javadoc으로 문서를 만들어주는 기능이 있다는 것을 발견해서 프로젝트를 javadoc으로 만들어보았다!. 본론 기본적인 개념 javadoc 주석을 달아놓은 메서드와 클래스들을 문서로 자동으로 만들어준다. /** * 유저의 이메일이 데이터베이스에 존재하는지 체크 * @param email 체크하려는 이메일 * @return true 존재하는 이메일, false 존재하지 않는 이메일 * */ private void emailDuplicateCheck(String email){ if(userDAO.existUserByEmail(email)){ throw new EmailDuplicateException(); } } 위와 같이 /** 내용 */ 형태로 작성한 주석을 javadoc이라..
11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 풀이 이 문제는 DP 문제로 주어진 직사각형 크기를 가득 채우는 방법의 수를 물어본다. 따라서 작은 크기의 사각형부터 하나씩 방법들을 작성하면서 어떤 규칙이 있는지 생각해보고 점화식을 만들었다. n = 1, 일때 방법은 1가지 n = 2, 일때 방법은 2가지 n = 3, 일때 방법은 3가지 n = 4, 일때 방법은 5가지 n = 5, 일때 방법은 8가지 위의 결과를 보고 유추해보다가..
2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 풀이 이친수의 첫 자리수는 1이 반드시 와야하기..
개요 기존의 서비스에서 Access Token만을 사용하여 로그인 후 api에 대한 인가 처리를 진행해주었다. 하지만 이 방식은 Access Token의 긴 유효시간으로 인해 replay, MITM 공격에 취약하다는 문제점이 있다. Access Token이 만약 탈취된다면 공격자는 그 Access Token을 사용해서 정당한 유저를 사칭하여 모든 정보에 액세스할 수 있는 문제가 생긴다. 따라서 만료시간이 긴 Refresh Token과 만료시간이 짧은 Access Token을 두고 Access Token의 짧은 만료시간을 Refresh Token으로 좀 더 길게 유지시킬 수 있고 Access Token의 만료시간이 짧기 때문에 탈취당한다고 하더라도 공격의 강도가 약해질 수 있다. 따라서 기존의 Access..
2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 문제 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오. 풀이 1번 컴퓨터와 연결된 모든 컴퓨터를 DFS 혹은 BFS로 탐색하면서 감염된 컴퓨터를 구하는 문제였다. 📌 입력 int N = Integer.parseInt(br.readLine())+1; int M = Integer.parseInt(br.readLin..
14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 문제 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 풀이 로봇 청소기가 동작하는 방식을 BFS 로직과 비슷하게 구현해보았습니다. 📌 입력 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine())..