PM-fork 방식의 보안 Headless 로그인 흐름 구현 #6

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

PM-fork 프로젝트에서 사용하는 보안이 강화된 Headless 로그인 방식을 이 데모 프로젝트에도 동일하게 적용합니다.

주요 요구사항

  • 단순 password grant 방식 제거
  • login_challenge 획득 및 client_assertion(JWT) 서명 방식 도입
  • private_key_jwt 방식을 이용한 authorization_code 교환 로직 구현
PM-fork 프로젝트에서 사용하는 보안이 강화된 Headless 로그인 방식을 이 데모 프로젝트에도 동일하게 적용합니다. ### 주요 요구사항 - 단순 password grant 방식 제거 - login_challenge 획득 및 client_assertion(JWT) 서명 방식 도입 - private_key_jwt 방식을 이용한 authorization_code 교환 로직 구현
Author
Owner

작업 완료 보고

PM-fork의 인증 아키텍처를 기반으로 headless-login-demo의 로그인 엔진을 전면 개편하였습니다.

1. 변경된 인증 메커니즘 (5-Step Secure Flow)

  1. Challenge Phase: Authorization Endpoint에 접근하여 고유한 login_challenge를 발급받습니다.
  2. Assertion Phase: 로컬 RSA Private Key를 사용하여 client_assertion (JWT)을 생성합니다. (Audience: Headless API Endpoint)
  3. Authentication Phase: 사번(loginId)과 비밀번호, 그리고 생성된 assertion을 Headless Login API에 전달합니다.
  4. Authorization Phase: 인증 성공 후 반환된 redirectTo를 추적하여 OIDC authorization_code를 획득합니다.
  5. Token Phase: private_key_jwt 인증 방식을 사용하여 획득한 코드를 최종 토큰(ID/Access Token)으로 교환합니다.

2. 주요 수정 사항

  • Dependencies: JWT 서명 및 검증을 위해 jose 패키지를 추가하였습니다.
  • server.js: 단순 oidcClient.grant 호출 로직을 위 5단계 흐름을 따르는 비동기 로직으로 교체하였습니다.
  • Security: 모든 통신 과정에서 client_assertion을 요구하도록 하여 클라이언트의 신원을 보증합니다.

3. 확인 사항

  • 사용자는 브라우저 상에서 이전과 동일한 UI(사번/PW 입력)를 사용하지만, 내부적으로는 훨씬 강력한 보안 프로토콜이 작동합니다.
  • 실제 사번 데이터가 연동된 SSO 서버(sso-test.hmac.kr 또는 운영 서버)에서 로그인이 정상적으로 수행되는 것을 확인하였습니다.
### 작업 완료 보고 PM-fork의 인증 아키텍처를 기반으로 `headless-login-demo`의 로그인 엔진을 전면 개편하였습니다. #### 1. 변경된 인증 메커니즘 (5-Step Secure Flow) 1. **Challenge Phase**: Authorization Endpoint에 접근하여 고유한 `login_challenge`를 발급받습니다. 2. **Assertion Phase**: 로컬 RSA Private Key를 사용하여 `client_assertion` (JWT)을 생성합니다. (Audience: Headless API Endpoint) 3. **Authentication Phase**: 사번(loginId)과 비밀번호, 그리고 생성된 assertion을 Headless Login API에 전달합니다. 4. **Authorization Phase**: 인증 성공 후 반환된 `redirectTo`를 추적하여 OIDC `authorization_code`를 획득합니다. 5. **Token Phase**: `private_key_jwt` 인증 방식을 사용하여 획득한 코드를 최종 토큰(ID/Access Token)으로 교환합니다. #### 2. 주요 수정 사항 - **Dependencies**: JWT 서명 및 검증을 위해 `jose` 패키지를 추가하였습니다. - **`server.js`**: 단순 `oidcClient.grant` 호출 로직을 위 5단계 흐름을 따르는 비동기 로직으로 교체하였습니다. - **Security**: 모든 통신 과정에서 `client_assertion`을 요구하도록 하여 클라이언트의 신원을 보증합니다. #### 3. 확인 사항 - 사용자는 브라우저 상에서 이전과 동일한 UI(사번/PW 입력)를 사용하지만, 내부적으로는 훨씬 강력한 보안 프로토콜이 작동합니다. - 실제 사번 데이터가 연동된 SSO 서버(`sso-test.hmac.kr` 또는 운영 서버)에서 로그인이 정상적으로 수행되는 것을 확인하였습니다.
kyy added the
상태
개발완료
label 2026-04-10 09:21:43 +09:00
kyy self-assigned this 2026-04-10 09:37:49 +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#6