Files
vpd-permission-poc/docs/design/710-smilegate-poc4-url-token-security

#710 POC4 URL 로그인 토큰 제거

프로젝트 개요

Smilegate DATA & AI PoC의 POC4 Streamlit 콘솔은 게임 데이터 MCP와 Select AI Text2SQL 데모를 제공한다. 포털 로그인은 콘솔 접근을 보호한다.

문제

로그인 유지용 서명 토큰이 poc4_remember query parameter로 URL에 포함됐다. URL은 브라우저 기록, 프록시 로그, 공유 링크, Referrer에 남을 수 있으므로 인증 정보를 전달하는 경로로 사용하면 안 된다.

조치 설계

  1. Streamlit 코드에서 URL 토큰 생성·검증·삭제를 모두 제거한다.
  2. 로그인 상태는 현재 Streamlit 브라우저 세션에서만 유지한다. 서버가 HttpOnly, Secure, SameSite cookie를 발급하는 전용 인증 경로가 마련되기 전에는 영구 로그인 기능을 제공하지 않는다.
  3. POC4_LOGIN_REMEMBER_SECRET을 교체해 기존 서명 링크를 무효화한다.
  4. Caddy가 기존 poc4_remember query 요청을 애플리케이션으로 전달하지 않고 https://smilegate.cloud-handson.com/으로 303 redirect한다.

검증 기준

  • mcp_discovery_ui.pypoc4_remember 또는 st.query_params 로그인 토큰 코드가 없다.
  • 기존 query URL 요청은 query가 없는 루트 URL로 303 응답한다.
  • smilegate-poc4-console.service가 정상 기동한다.
  • 토큰, password hash, signing key는 Git·Redmine·명령 출력에 기록하지 않는다.

후속 개선

영구 로그인 요구가 다시 생기면 POC4 자체가 아닌 서버 인증 endpoint가 HttpOnly; Secure; SameSite=Lax cookie를 발급하고, Streamlit은 요청 cookie의 서버 검증 결과만 읽는 구조로 구현한다.