Headless 로그인 연동 문제 해결 및 설정 가이드 #7

Open
opened 2026-04-09 16:50:15 +09:00 by kyy · 1 comment
Owner

실제 사번(b24053) 로그인을 테스트하는 과정에서 발생한 OIDC 프로토콜 오류들을 해결하고, 안정적인 연동을 위한 로직을 보완했습니다.

주요 해결 과제

  1. Redirect URI Mismatch: SSO 서버에 등록된 콜백 주소와 앱의 설정값이 달라 발생하는 인증 거부 해결
  2. Audience Mismatch: Headless API 호출 시 전달하는 client_assertion (JWT)의 aud 필드 값 유효성 검증 실패 해결
  3. 상세 로깅 도입: API 거부 시 SSO 서버로부터 반환되는 구체적인 에러 메시지를 확인하기 위한 디버깅 코드 강화
실제 사번(`b24053`) 로그인을 테스트하는 과정에서 발생한 OIDC 프로토콜 오류들을 해결하고, 안정적인 연동을 위한 로직을 보완했습니다. ### 주요 해결 과제 1. **Redirect URI Mismatch**: SSO 서버에 등록된 콜백 주소와 앱의 설정값이 달라 발생하는 인증 거부 해결 2. **Audience Mismatch**: Headless API 호출 시 전달하는 `client_assertion` (JWT)의 `aud` 필드 값 유효성 검증 실패 해결 3. **상세 로깅 도입**: API 거부 시 SSO 서버로부터 반환되는 구체적인 에러 메시지를 확인하기 위한 디버깅 코드 강화
Author
Owner

최종 고도화 및 트러블슈팅 완료 보고

연동 테스트 중 발생한 OIDC 프로토콜의 복합적인 장애 요인들을 모두 해결하고, PM-fork의 핵심 메커니즘을 완벽하게 이식하였습니다.

  • 문제: 로그인 성공 후 SSO 서버가 사용자 동의(Consent)를 요구하여 프로세스가 중단됨.
  • 조치: Consent 화면 감지 시 요청된 Scope를 분석하고, 백그라운드에서 /api/v1/auth/consent/accept API를 호출하여 무인 승인을 수행하는 로직을 추가하였습니다.

2. 유연한 클라이언트 인증 (Dynamic Fallback)

  • 문제: SSO 클라이언트가 Public 모드일 경우 client_assertion 포함 시 요청을 거절하는 엄격한 보안 정책 발생.
  • 조치: 토큰 교환(Step 4) 시 private_key_jwt 인증이 실패할 경우, 즉시 인증 없는(None) 방식으로 재시도하는 Fallback 메커니즘을 적용하여 다양한 클라이언트 설정에 대응하도록 개선하였습니다.

3. Redirect URI 및 환경설정 최적화

  • 소스 코드 내에서 .envREDIRECT_URI가 누락되지 않고 모든 단계에서 일관되게 사용되도록 보정하였습니다.
  • 재귀적 리다이렉트 추적 로직을 통해 복잡한 OIDC 홉(Hop)을 안정적으로 따라가 Authorization Code를 확보합니다.

4. 테스트 최종 결과

  • 사번(b24053) 로그인 성공: SSO 서버의 테넌트 프로필 데이터를 기반으로 인증 및 토큰 획득 전 과정이 자동화되어 성공적으로 수행됨을 확인하였습니다.

이로써 headless-login-demo는 실제 운영 환경 수준의 복잡한 OIDC 시나리오를 처리할 수 있는 엔진을 갖추게 되었습니다.

### 최종 고도화 및 트러블슈팅 완료 보고 연동 테스트 중 발생한 OIDC 프로토콜의 복합적인 장애 요인들을 모두 해결하고, PM-fork의 핵심 메커니즘을 완벽하게 이식하였습니다. #### 1. Headless Consent 자동 승인 구현 - **문제**: 로그인 성공 후 SSO 서버가 사용자 동의(Consent)를 요구하여 프로세스가 중단됨. - **조치**: Consent 화면 감지 시 요청된 Scope를 분석하고, 백그라운드에서 `/api/v1/auth/consent/accept` API를 호출하여 **무인 승인**을 수행하는 로직을 추가하였습니다. #### 2. 유연한 클라이언트 인증 (Dynamic Fallback) - **문제**: SSO 클라이언트가 Public 모드일 경우 `client_assertion` 포함 시 요청을 거절하는 엄격한 보안 정책 발생. - **조치**: 토큰 교환(`Step 4`) 시 `private_key_jwt` 인증이 실패할 경우, 즉시 **인증 없는(None) 방식**으로 재시도하는 Fallback 메커니즘을 적용하여 다양한 클라이언트 설정에 대응하도록 개선하였습니다. #### 3. Redirect URI 및 환경설정 최적화 - 소스 코드 내에서 `.env`의 `REDIRECT_URI`가 누락되지 않고 모든 단계에서 일관되게 사용되도록 보정하였습니다. - 재귀적 리다이렉트 추적 로직을 통해 복잡한 OIDC 홉(Hop)을 안정적으로 따라가 Authorization Code를 확보합니다. #### 4. 테스트 최종 결과 - **사번(`b24053`) 로그인 성공**: SSO 서버의 테넌트 프로필 데이터를 기반으로 인증 및 토큰 획득 전 과정이 자동화되어 성공적으로 수행됨을 확인하였습니다. 이로써 `headless-login-demo`는 실제 운영 환경 수준의 복잡한 OIDC 시나리오를 처리할 수 있는 엔진을 갖추게 되었습니다.
kyy added the
상태
개발완료
label 2026-04-10 09:23:21 +09:00
kyy self-assigned this 2026-04-10 09:37:44 +09:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kyy/headless-login-demo#7