웹 개발 검색 결과
25건
[OpenID Connect] 카카오 로그인과 아마존 Cognito 연동 - Hosted UI 설정까지
카카오 로그인 & 아마존 Cognito 연동하기 OIDC OpenID Connect는 OAuth2 확장이야. 인가 서버에게 openid 스코프를 요청함으로써 추후 Access Token, Refresh Token 말고도 Identity Token을 발행 받게 되지. ID 토큰엔 기본적인 유저 어썰션이 담겨 있으니 세션 대용 뿐만 아니라 유저 정보 획득에도 쓸 수 있어. 한 편, OIDC 리소스 서버는 UserInfo 엔드포인트를 노출하는데, Access Token을 보여주면 거기에 대응된 유저 정보를 받아올 수 있어. 앱에 '신속한 회원 가입'을 도입할 때 OAuth만으로 충분하긴 하지. 근데 유저 정보 습득을 하려면 해당 벤더의 특화된 API를 후속적으로 호출하게 될 거야. OIDC는 유저 정보를 획득..
[REST] REST API는 REST가 아니다 - REST 성숙도 모델
주석 레오나르도 리차드슨은 Beautiful Soup의 Contibutor이자, RESTful Web Services의 저자이다. 그는 차기 저서인 RESTful Web API에서, 현대의 REST API는 로이 필딩이 핵심으로 짚은 "REST" 특성을 지니고 못한다고 지적했다. 웹 페이지는 직관적으로 이해하기 쉬운 하이퍼텍스트 콘트롤을 표현에 포함한다. 유저는 링크나 버튼을 눌러 다음 상태로 나아가게 되는데, 이것이 웹 성공의 중추인 REST; 표현에 의한 상태 전이이다. 현대의 REST API는 SOAP의 WSDL과 같은 엄격한 SOA 표준을 대체했고, Verb 기반 URL 대신 Resource 지정을 사용하며, HTTP 표준 메서드의 시멘틱을 재활용해 쉽고 직관적인 API를 만드는 데 성공했다. 그..
[카카오챗봇] 가이드 문서 요약 정리 (1): 시나리오, 블록, 학습, 지식베이스
시나리오와 블록 챗봇의 동작을 정의하려면 시나리오를 하나 이상 생성한다. 시나리오 속에는 다시 블록을 작성하여야 한다. 시나리오 설정 ⚙️ 현재 시나리오 전역적으로 적용할 수 있는 공통 기능들을 설정하는 장소이다. 시나리오 공통 기능들 되묻기 기능 봇이 사용자의 쿼리를 이해하지 못 했을 때 출력할 질문을 되묻기 질문이라 한다. 되묻기 질문의 메시지, 최대 재시도 횟수, 되묻기 대기 시간을 설정할 수 있다. 봇 제네릭 메뉴 제네릭 메뉴는 카카오톡 챗봇 화면에서 하단 UI에 자리하는 퀵 메뉴들이다. 퀵 메뉴는 블록으로 연결하거나, 퀵 메뉴의 이름 그대로의 메시지를 전송하는 기능을 일으킬 수 있다. 블록 ⚙️ 사용자 발화 패턴, 파라미터, 스킬, 플러그인을 조합하면서 챗봇에 비즈니스 요구사항을 구현할 수 있다..
[스프링] (AA vs. Retrofit) 어노테이션 기반 REST 클라이언트를 위한 프레임워크
연구 계기 중국 게임사 미호요는 자사 게임 커뮤니티 앱 HoYoLab을 운영한다. 이 앱은 게임 관련 공략을 공유하는 기본적인 커뮤니티 기능과 더불어, 유저의 게임 내 데이터를 수치화 & 통계해 보여주는 편의 기능도 제공한다. 원신 유저로써 관련 API들의 엔드포인트 주소를 파악하고 인증 방식을 파훼하여 자바 클라이언트를 작성하고 싶었기 때문에 HoYoLab 안드로이드 APK 파일을 살펴보게 되었다. 그러던던 중 HTTP 클라이언트 호출 서비스가 상당히 깔끔히 작성되어 있음을 발견하였다. 개발자는 클라이언트 서비스의 인터페이스만 작성하면 되었는데, 이들은 어노테이션으로 꾸며져 선언적으로 구성되어 있다. 이런 방식은 스프링 MVC에서 핸들러 매핑을 작성하는 것과도 흡사하다. package com.mihoy..
[스프링 Cloud] Spring Cloud AWS + RDS Read Replica 연동
적용 코드 binchoo-spring-study/aws/rds at master · binchoo/binchoo-spring-study 개요 부하 분산 아키텍처는 단일 엔드포인트를 사용자에게 노출하고, 뒷 단의 트래픽 라우팅은 투명하게 감추는 게 이상적입니다. 아마존 관계형 DB 서비스 RDS는, 비용을 20% 가량 더 지불해 Aurora라는 래퍼를 사용하여 해당 부문을 향유할 수 있습니다. 하지만 일반적인 RDS(MySQL, PostgreSQL ...)를 사용할 경우 부하 분산 책임은 AWS가 아닌 응용 계층에 지워집니다. 이 글은 단일 DB 엔드포인트를 사용할 수 없어 응용에서 직접 엔드포인트를 분기 선택할 경우, Spring Cloud AWS JDBC 모듈을 사례로 들어 RDS의 Read Repli..
[WebSocket] Stomp 프로토콜 1.2 명세 번역
주의: 이 문서는 명세서 원본이 아닙니다. 문서를 읽어보면서 개략적으로 개인 공부를 위해 한글로 옮긴 것입니다, 명세의 모든 문장을 포함하지 않았습니다. STOMP 프로토콜 배경 STOMP는 스크립트 언어(Ruby, Python, Perl 등)에서 엔터프라이즈 메시지 브로커와 연결할 필요성이 있어 탄생했다. STOMP는 스크립트 환경에서 "신뢰 가능한 단일 메시지 전송 & 연결 해제"와 "특정 목적지에 쌓여있는 메시지를 모두 읽어오기" 같은 일들을 수행하는, 흔하면서도 논리적으로 단순한 연산들이다. 프로토콜 개요 프레임 기반 프로토콜 STOMP는 HTTP 위에 올라가는 프레임으로 모델링된다. 프레임은 하나의 커맨드, 선택적인 헤더들, 그리고 선택적인 바디를 갖는다. STOMP가 사용하는 기본 인코딩은 U..
[스프링MVC] javax.servlet.http.Part가 파일을 받지 못할 때
Part 인자 바인딩이 안 먹는 경우 스프링 5.3.2 버전 이상을 권장합니다. 이 버전에서 Part 바인딩 관련 이슈가 해결되었음: MockPart in request is not recieved in RequestPart in controller · Issue #26501 · spring-projects/spring-framework Affects version: 5.3.3 Related to: #26261 I have a controller method that accepts multipart/form-data requests with 2 parameters: a file and a @RequestPart String label. Previously in my tests I wa... github...