목록분류 전체보기 (56)
코딩블로그
본격적으로 "밥메이트" 프로젝트에 OIDC를 도입한 내용에 관해 정리를 해보려고 한다. 1. 공개키 목록 조회, feign client로 캐싱하기 우선 Feign Client란? Feign Client란 Netflix에서 개발한 Http Client이다. 현재는 오픈소스로 전환되어 SpringCloud 프레임워크의 프로젝트 중 하나로 들어가있다 장점 Spring Cloud의 starter-openfeign을 사용할 경우 SpringMVC에서 제공되는 어노테이션을 그대로 사용할 수 있다 RestTemplate보다 간편하게 사용할 수 있고 가독성이 좋다 요청에 대한 커스텀이 간편하다 단점 동기적으로 동작한다. 즉, 하나의 요청이 끝나야 다음 동작이 가능하다 로그인 부분에만 feign client를 사용하기로..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bxFw7R/btsEEL3sLo6/OzJM8BkvjSBI6KqtRXDDM1/img.png)
밥메이트 프로젝트를 진행하면서 Exception다루는 클래스를 작성해보았습니다 BaseErrorCode public interface BaseErrorCode { public ErrorReason getErrorReason(); } BaseException @Getter @AllArgsConstructor public class BaseException extends RuntimeException { private final BaseErrorCode errorCode; public ErrorReason getErrorReason() { return this.errorCode.getErrorReason(); } } Dto/ErrorReason @Getter public class ErrorReason { ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/FTj34/btsCiMD0gba/uBseNQ0pVZ8X1NKtCcYKk0/img.png)
1. 기존의 Oauth AccessToken으로 회원가입할 때의 문제 응답값에 Oauth AccessToken이 해당 프로젝트에서 발급되었다는 사실을 확인할 수 없다는 것이 큰 문제이다. 토큰에는 해당 사용자에대한 프로필 정보만 내려오기 때문이다 따라서 따로 토큰에 대한 정보 보기를 요청하여 응답값으로 넘어온 app_id가 해당 프로젝트 앱의 app_id인지 2차로 확인하는 과정이 필요하다. 2. OIDC https://developers.kakao.com/docs/latest/ko/kakaologin/common#oidc Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. develo..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/beX8uE/btsm84fnpiO/EdgxXFo1VYT7qEQ393Jue0/img.png)
서비스 등록(네이버,카카오, 구글 등이 존재하지만 현재 나는 카카오로만 구현해보았다) 카카오 소셜 로그인 등록 https://developers.kakao.com/console/app 카카오계정 accounts.kakao.com 전체적인 동작 과정 소셜 로그인 요청 백엔드로 GET “/oauth2/authorization/{provider-id}?redirect_uri=http://localhost:3000/oauth/redirect”으로 OAuth 인가 요청(여기서 provider-id는 kakao나 naver같은 말그대로provider이름) Provider별로 Authorization Code 인증을 할 수 있도록 Redirect 리다이렉트 화면에서 provider서비스에 로그인 로그인이 완료된 후,..
Spring Security란? Spring Security는 Spring 기반의 어플리케이션 권한과 인증, 인가 등의 보안을 담당하는 하위 프레임워크이다. 인증과 권한을 Filter흐름에 따라 처리하게 구현되어 있고, 이미 대부분의 보안적인 로직들이 포함되어 개발자가 추가로 코드를 짜지 않아도 된다는 장점이 있다 OAuth2.0란? Open Authentication2의 약자로 인증 및 권한획득을 위한 업계표준 프로토콜이다. OAuth2는 보안수준이 어느정도 검증된 플랫폼의 API를 이용하여 사용자 인증과 리소스에 대한 권한 획득(인가)을 할 수 있도록 해주는 역할을 하고, 대부분의 영향력이 있고 OAuth2 인증을 제공하는 플랫폼들은 모두 OAuth2 규칙을 지키는 API를 제공하고 있다. OAuth..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/yeLj0/btslC4HuzgB/pRxYPTuKXvI2YisYAyFGjK/img.png)
jwt로그인을 앞으로 더 활용할 예정일 것 같기도 하고, jwt로그인을 구현하면서 배운 점이 많기도 해서 정리를 해보고 싶다refresh token은 구현을 아직 안해보았다.access token발급까지 해보았다.개발환경-SpringBoot 3.1.1이고 Spring Security 5.7.3버전을 사용하였다-그냥 로그인, 회원가입 구현할때 구글링할 때 나오는 것들은 거의 다 5.7.0이하 여서 공부하기 힘들었다. WebSecurityConfigureAdapter를 확장해서 사용하는 것이 아니라 Bean을 만들어서 주입하는 방식으로 살짝 변경이 되어 그 변경된 내용대로 구현하였다 -Java 17, Gradle을 이용해서 구현하였다 User@Getter@Builder@Entity@NoArgsConstruc..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Q7HDJ/btslwqdK39r/RxEX74YtvcVafdnNr8DK8k/img.png)
웹 소켓이란? 두 프로그램 간의 메시지 교환을 위한 통신 방법 중 하나 특징 1. 양방향 통신(Full-Duplex) 데이터 송수신을 동시에 처리할 수 있는 통신 방법 클라이언트와 서버가 서로에게 원할 때 데이터를 주고받을 수 있다 통상적인 HTTP통신은 client가 요청을 보내는 경우에만 Server가 응답을 하는 단방향 통신 2. 실시간 네트워킹(Real Time-Networking) 웹 환경에서 연속된 데이터를 빠르게 노출 ex) 채팅, 주식, 비디오 데이터 채팅 앱 구현해보기 파일 구조 ├─main │ ├─java │ │ └─com │ │ └─bee │ │ └─chat │ │ │ ChatApplication.java │ │ │ │ │ ├─chat │ │ │ ChatController.java │..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/odpFW/btsddZ2mMfa/smRkLzyR8aKh733FbFkip1/img.png)
김영한 강의를 들으면서 이론적인 내용에 대한 정리를 하고 있었는데, 정리를 해도 본인이 직접 부딪혀 보지 않으면 얻어가는 게 많이 없을 것 같아서 직접 간단하게 구현해 볼 수 있는 '직원관리 사이트'를 만들어 보았다 백엔드는 spring boot, 프론트엔드는 angular+bootstrap을 사용하였다 0. 파일구조 1.spring 나는 MongoDB밖에 사용해 본 적이 없었는데 spring boot generate 할 때 설정을 처음부터 mysql로 해버려서 MYSQL에 대해 배워보는 겸 MYSQL로 DB연결을 했다 1.root계정으로 들어가기 2.명령어 입력하기 CREATE DATABASE 데이터베이스이름 default CHARACTER SET UTF8; show databases; USE ; sp..