[Headless] UserFront 연동 앱 실행 시 /callback 에서 멈추고 /home.html 로 이동하지 않음 #15
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
baron-ssoUserFront 대시보드에서 연동된 RP 카드local-demo-rp를 클릭하면 OIDC flow는 성공적으로 진행되어http://localhost:4000/callback?code=...까지 도달하지만, 이후 RP 홈 화면인/home.html로 이동하지 않고인증이 완료되었습니다. 앱으로 돌아가주세요.문구만 표시됩니다.반면
headless-login-demo자체 로그인 화면(http://localhost:4000)에서 직접 로그인하면 정상적으로 세션이 생성되고/home.html로 이동합니다.Reproduction
baron-ssoUserFront에 로그인한다.local-demo-rp를 클릭한다.http://localhost:4000/callback?code=...&scope=openid+profile&state=...로 이동한다.인증이 완료되었습니다. 앱으로 돌아가주세요.만 표시되고home.html로 넘어가지 않는다.Expected
OIDC callback에서 받은
code를 RP가 token endpoint로 교환하고, 로컬 세션을 생성한 뒤http://localhost:4000/home.html로 리다이렉트되어야 합니다.Actual
/callback엔드포인트가 고정 안내 문구만 반환하고 종료됩니다.Root Cause
현재
headless-login-demo에는 로그인 경로가 두 개 있습니다.public/app.js->/api/login또는/api/send-linkserver.js의runHeadlessSsoLogin(...)가redirectTo추적, authorization code 획득, token exchange,req.session.user저장까지 수행redirectTo: '/home.html'를 프론트가 따라가며 정상 이동init_url(Hydra/oauth2/auth?...)을 직접 오픈/callback?code=...로 직접 돌아옴/api/login/runHeadlessSsoLogin(...)/public/app.js를 거치지 않음/callback핸들러는 code exchange / session creation / redirect logic 없이 안내 문구만 반환즉, direct login flow는 구현되어 있지만 OIDC callback direct-entry flow는 미구현 상태입니다.
Relevant Code
server.jsrunHeadlessSsoLogin(...)inside login flow handles token exchange and returnsredirectTo: '/home.html'/callbackcurrently only returns a plain text messagepublic/app.jsresult.redirectToSuggested Fix
/callback에서도 direct login flow와 동일하게 아래를 수행하도록 공통화가 필요합니다.code검증authorization_code교환id_token에서 사용자 정보 추출req.session.user저장302 /home.html리다이렉트가능하면 token exchange / session creation 로직을
runHeadlessSsoLogin(...)내부 전용으로 두지 말고 재사용 가능한 helper로 분리하는 편이 안전합니다.Notes
문서 의도와도 현재 구현이 어긋납니다.
docs/headless-employee-login-flow.md에서는 마지막 단계가세션 쿠키 발급 후 /home.html 리다이렉트로 설명되어 있습니다.[Headless] UserFront linked app launch stops at /callback instead of redirecting to /home.htmlto [Headless] UserFront 연동 앱 실행 시 /callback 에서 멈추고 /home.html 로 이동하지 않음작업 완료 보고
이슈 #15에서 보고된 OIDC 콜백 진입 시 인증이 멈추는 문제를 해결했습니다.
주요 수정 사항
/callback경로로 직접 들어오는 인가 코드(Authorization Code)를 처리하여 토큰으로 교환하고 세션을 생성하도록 로직을 추가했습니다.exchangeCodeForToken(code): 인가 코드를 보안 토큰으로 교환하는 로직을 통합 관리합니다.finalizeLogin(req, tokenData, method): 토큰에서 사용자 정보를 추출하고 세션을 생성하는 과정을 표준화했습니다./home.html대시보드로 이동하게 수정했습니다.이제 UserFront 대시보드를 통한 진입과 직접 로그인 방식 모두 정상적으로 세션이 생성됩니다.