로그인

LOGIN · /login

실제 화면 열기 ↗
종류
진입
부르는 것
0
lib 함수
가드레일
3
18
공개 — 로그인 없이 열린다진입

화면

LOGIN 캡처

이 화면이 부르는 것

서버를 부르지 않습니다. 정적 화면이거나 하위 컴포넌트가 부릅니다.

소스 src/app/login/page.tsx

같은 규칙을 쓰는 화면

이 화면 하나뿐입니다.

개발 스펙

ADMIN-CONSOLE-LOGIN완료이 스펙은 1개 화면이 함께 씁니다

이 화면에서 할 수 있어야 하는 것 (3)

  • 관리자 아이디와 비밀번호로 로그인한다.
  • 수강생 계정으로는 로그인되지 않는다.
  • 실패 사유를 자세히 알려주지 않는다 — 아이디가 없는지 비밀번호가 틀린지 구분되면 안 된다.

비즈니스 규칙 (3)

  • 관리자 전용 엔드포인트를 쓴다. 수강생 계정은 서버가 거부한다.
    근거: admin/login_proc.php
  • 화면에서 걸러내는 방식이 아니다 — 로그인 자체가 안 된다.
  • 로그인하면 세션이 (console) 레이아웃 전체를 통과시킨다.

API (1)

메서드경로권한모듈 · 설명
POST/api/identity/admin/login공개
관리자 로그인 → accessToken. 관리자 계정만 받는다.
domains:identity:identity-web
401 UNAUTHORIZED

가드레일 (3) — id 가 곧 테스트 이름이다

id반드시 만족해야 하는 것등급
admin-console-requires-login
비로그인 상태로 어떤 관리자 화면에도 머무를 수 없어야 한다.
critical
admin-console-rejects-student
수강생 계정으로는 로그인되지 않아야 한다.
화면에서 감추는 것으로는 부족하다 — API 를 직접 부를 수 있다.
critical
admin-login-no-account-enumeration
아이디가 없는 경우와 비밀번호가 틀린 경우의 응답이 같아야 한다.
high

구현 계획 (3/3)

  1. 관리자 전용 Credentials providerwvctesol-admin
  2. (console) 레이아웃에서 세션을 한 번에 확인wvctesol-admin
  3. trustHost — 프로덕션 빌드에서 Host 신뢰wvctesol-admin

서버 사이드 구현 계획 — 자바 객체별 요구사항 (1/1)

객체모듈책임 · 지켜야 할 것
AdminLoginUseCase
service
identity-app
관리자 로그인.
  • 관리자 계정만 통과시킨다. 수강생 계정은 여기서 막힌다.
  • 레거시 MySQL PASSWORD() 해시가 섞여 있어 두 형식을 모두 다룬다.
  • 실패 사유를 구분해 돌려주지 않는다.

테스트 방법 (3)

가드레일종류확인 방법
admin-console-requires-logine2e비로그인으로 6개 경로 접근 → 전부 /login 리다이렉트
admin-console-rejects-studente2equiztester 로 로그인 시도 → 거부 + 사유 표시
admin-login-no-account-enumerationmanual없는 아이디와 틀린 비밀번호의 응답 문구가 같다