본문 바로가기

전체 글126

CTE + Email MFA 인증 흐름 설계하기 로그인이 되어 있다고 모든 작업을 같은 수준으로 믿어도 될까요? 저희는 B/L(Bill of Lading, 선하증권)처럼 민감한 업무를 실행하기 직전에 이메일 OTP로 한 번 더 확인하는 흐름이 필요했습니다.새 로그인 체계를 만드는 대신, 기존 로그인과 권한 검사는 그대로 두고 Auth0의 Custom Token Exchange(CTE) 와 MFA API를 이어 붙였습니다. 이 글은 그 과정에서 내린 결정과, 두 번 크게 헤맨 지점을 정리한 기록입니다.세 줄 요약이미 가진 accessToken을 CTE에 넘겨 사용자를 확인하고, Post Login Action에서 MFA를 요구해 이메일 OTP를 보냅니다.토큰을 직접 해석하지 않고 신뢰하는 /userinfo 서버에 물어보는 방식으로 검증을 단순하게 만들었.. 2026. 10. 15.
tmux와 launchd로 원격 개발 환경 상시화하기 SSH를 끊으면 왜 프로세스가 죽을까 — tmux와 launchd로 원격 개발 환경 상시화하기집에 있는 Mac Mini를 회사에서 브라우저로 쓰고 싶었다. Tailscale로 길은 뚫었고, SSH로 붙어서 서버를 띄웠다. 잘 됐다. 그런데 터미널을 닫는 순간 전부 끊겼다.이 글은 그 하루의 기록이다. tmux를 왜 쓰는지, 그리고 왜 결국 tmux를 안 쓰게 됐는지에 대한.1. 문제: SSH를 끊으면 왜 프로세스가 죽나원격 서버에 SSH로 붙어서 이렇게 띄웠다고 하자.ssh miracle@100.101.102.103orca serve --pairing-address 100.101.102.103서버가 뜬다. 브라우저로 접속도 된다. 그런데 SSH 세션을 닫으면 서버도 같이 죽는다.이유는 프로세스 트리에 있.. 2026. 7. 15.
[앱인토스] `LOGIN_CODE_NOT_EXIST` 에러 처리하기 Apps in Toss LOGIN_CODE_NOT_EXIST 에러 처리하기: 사용자가 약관 동의를 닫았을 때의 올바른 로그인 UXApps in Toss 미니앱에서 토스 로그인을 붙이다 보면 appLogin() 호출 중 아래와 같은 에러를 만날 수 있습니다.LOGIN_CODE_NOT_EXIST: 로그인을 완료할 수 없습니다.처음 보면 “토스 로그인 연동이 실패한 건가?”, “서버에서 인가 코드 교환이 안 된 건가?”, “mTLS나 Supabase 설정 문제인가?”라고 생각하기 쉽습니다.하지만 이 에러는 대부분 서버까지 가지도 않은 상태, 즉 토스 SDK의 appLogin() 단계에서 사용자가 로그인/약관 동의 화면을 닫았을 때 발생합니다.이번 글에서는 LOGIN_CODE_NOT_EXIST가 정확히 어떤 상.. 2026. 6. 22.
무료 금융 API 제대로 쓰는 법 — Alpha Vantage 앱인토스에 미국 ETF 시세를 보여주는 미니앱을 만들면서, 외부 금융 데이터 API로 Alpha Vantage를 사용했습니다. 처음엔 "클라이언트에서 직접 부르면 되겠지"라고 단순하게 생각했지만, 무료/제한 있는 API를 다루다 보니 구조 자체를 다시 짜게 됐습니다.이 글은 그 과정에서 배운 것들을 정리한 개발 회고입니다. 초보 개발자나 혼자 만드는 1인 개발자(솔로 빌더)가 따라 읽을 수 있도록 용어는 최대한 풀어서 설명했습니다.3줄 요약무료 금융 API는 클라이언트에서 직접, 자주 부르면 키 노출·호출 한도·장애 전파 문제가 생깁니다.서버 크론이 주기적으로 Alpha Vantage를 호출해 DB에 "시세 스냅샷"으로 저장하고, 앱은 그 스냅샷만 읽게 했습니다.ETF 학습/참고용 앱에는 초단위 실시간이.. 2026. 6. 15.
Contact Miracle's Dev Log에 방문해주셔서 감사합니다. 블로그 글에 대한 문의, 오류 제보, 내용 보완 제안, 기타 연락이 필요한 경우 아래 이메일로 연락할 수 있습니다. 이메일: happyin02@miracle-tech.kr문의 시 아래 내용을 함께 적어주시면 확인에 도움이 됩니다. - 문의 대상 글 URL - 문의 내용 - 오류 또는 보완이 필요한 부분 - 답변을 받을 이메일 주소 보내주신 내용은 문의 확인과 답변 목적으로만 사용됩니다. 2026. 6. 2.
개인정보처리방침 Miracle's Dev Log는 방문자의 개인정보를 중요하게 생각합니다.이 블로그는 기본적으로 방문자가 직접 개인정보를 입력하지 않아도 이용할 수 있습니다. 다만 문의 과정에서 이메일 등 연락처 정보를 제공하는 경우, 해당 정보는 문의 응답 목적으로만 사용됩니다.수집될 수 있는 정보블로그 운영 과정에서 다음과 같은 정보가 수집될 수 있습니다.방문 기록접속 브라우저 및 기기 정보IP 주소댓글 또는 문의 시 사용자가 직접 입력한 정보개인정보 이용 목적수집된 정보는 다음 목적에 한해 사용됩니다.블로그 운영 및 콘텐츠 개선문의 응답스팸 및 악성 이용 방지방문 통계 분석광고 및 쿠키 사용이 블로그는 Google AdSense 등 광고 서비스를 사용할 수 있습니다.Google을 포함한 제3자 광고 사업자는 쿠키를.. 2026. 6. 2.
About - Miracle's Dev Log About MiracleHello, and welcome to Miracle's Dev Log, the technical blog operated by Miracle (미라클).Miracle is an independent software business founded in March 2023 and based in Seoul, South Korea. We build and operate web, mobile, and AI-powered software products.This blog documents the real-world challenges, solutions, and lessons learned while developing and operating software products. Topic.. 2026. 6. 2.
다 같은 개념인 줄 알았다 — on-demand · serverless · Edge Function · 콜드 스타트 아키텍처 · 1인 개발자 메모다 같은 개념인 줄 알았다 — on-demand · serverless · Edge Function · 콜드 스타트"이거 다 비슷한 말 아니에요?"라는 질문에서 시작한, 네 단어가 사실은 서로 다른 '층'이라는 정리.2026-06-01 · 약 8분 소요 · 이전 글: 화면은 누가 그리나 — SSR · CSR들어가며: "이거 다 같은 거 아니에요?"지난 글에서 "앱인토스 앱은 CSR이고, 짝이 되는 백엔드는 serverless"라는 얘기를 하다가, 꼬리에 꼬리를 무는 질문이 나왔어요. on-demand, serverless, Edge Function, 콜드 스타트 — 글을 보다 보면 이 넷이 거의 한 묶음으로 같이 등장하거든요. 그래서 자연스럽게 이런 의문이 들죠. "이거 다 .. 2026. 6. 1.
화면은 누가 그리나 — SSR · CSR, 그리고 그 사이의 것들 프론트엔드 · 1인 개발자 메모화면은 누가 그리나 — SSR · CSR, 그리고 그 사이의 것들"Next.js 쓰면 SSR 아니에요?"라는 질문에서 시작한, 렌더링이 일어나는 '장소'에 대한 지형도 정리.2026-06-01 · 약 10분 소요들어가며: "Next.js 쓰면 SSR 아니에요?"앱인토스 앱은 전부 React로 짜는데, 이게 다 CSR이에요. 그런데 블로그나 랜딩 페이지 얘기가 나오면 갑자기 "그건 SSR이 유리하지"라는 말이 나오죠. 누가 물었어요. "같은 React인데 왜 어떤 건 CSR이고 어떤 건 SSR이에요? Next.js 쓰면 그냥 SSR 아니에요?"여기엔 흔한 오해가 하나 있어요. SSR과 CSR을 프레임워크 이름이나 좋고 나쁨의 문제로 보는 것. 사실 둘의 차이는 딱 하나예요 —.. 2026. 6. 1.
반응형