Rails Sso Universal Links Hotwire Native

Rails 간 SSO 구현 + iOS Universal Links로 앱 자동 전환까지

두 개의 Rails 8 서비스가 있다. 하나는 메인 앱(IdP 역할), 다른 하나는 연동 서비스(RP 역할). 연동 서비스 로그인 페이지에 “메인 앱으로 로그인” 버튼을 넣고, SSO로 인증 후 돌아오는 플로우를 구현했다. 거기에 iOS Hotwire Native 앱이 설치돼 있으면, 브라우저 대신 네이티브 앱에서 인증이 진행되도록 Universal Links까지 붙였다. 목표 플로우 [연동 서비스] "메인 앱으로 로그인" 클릭 → 메인 앱 /auth/sso/authorize 로 리다이렉트 → (앱 설치 시) iOS Universal Link → 네이티브 앱 열림 → (미설치 시) 브라우저에서 로그인 → 이미 로그인 상태면 바로 토큰 발급 → 미로그인이면 OTP 로그인 → 토큰 발급 → "인증 완료" 페이지 (2초 대기) → 콜백 URL로 리다이렉트 → 연동 서비스가 토큰 검증 → 로그인 완료 삽질 1: SSO 파라미터가 로그인 과정에서 유실됨 문제 SSO authorize 엔드포인트에 before_action :require_authentication을 걸어놨더니: ...

2026-02-17 · 7분 소요 · Seunghan
Rails Aasa Routing Proc Lambda Git

Rails AASA 라우팅 3가지 함정: proc vs lambda, 경로 누락, git 미추적

iOS 유니버설 링크(Universal Links)를 설정하려면 /.well-known/apple-app-site-association 경로에서 JSON을 반환해야 한다. Rails에서 이걸 라우팅할 때 흔히 빠지는 함정 3가지를 정리한다. 에러 ActionController::RoutingError (No route matches [GET] "/.well-known/apple-app-site-association"): ActionController::RoutingError (No route matches [GET] "/apple-app-site-association"): 배포 서버 로그에서 이 에러가 반복되고, iOS 앱에서 유니버설 링크가 동작하지 않는다. 함정 1: proc을 Rack 앱으로 사용 Rails routes에서 inline으로 파일을 반환하려고 proc을 쓰는 경우가 있다. # 동작하지 않는 코드 get "/.well-known/apple-app-site-association", to: proc { file = Rails.root.join("public/.well-known/apple-app-site-association") [200, { "Content-Type" => "application/json" }, [File.read(file)]] } Rails 라우팅에서 to: 옵션에 Rack 앱을 직접 넣을 때는 env 인자를 받는 callable이어야 한다. proc { } 블록은 인자 없이 정의되어 있어서 Rack 인터페이스를 만족하지 못한다. ...

2025-09-03 · 2분 소요 · Seunghan
개인정보처리방침 문의