docs(auth): restore legacy acceptance contracts
This commit is contained in:
@@ -266,6 +266,26 @@ credential, secret, token, cookie가 UI·URL·log·session state에 나타나지
|
|||||||
|
|
||||||
비민감 correlation ID 외 인증 비밀 상태가 없다.
|
비민감 correlation ID 외 인증 비밀 상태가 없다.
|
||||||
|
|
||||||
|
### REQ-001.03-AC02 — 두 credential의 constant-time 비교
|
||||||
|
|
||||||
|
**판정 기준**
|
||||||
|
|
||||||
|
제출 ID와 password는 각각 `hmac.compare_digest`로 비교하며, 한 필드가 일치하지 않아도 다른 필드의 비교를 생략하지 않는다.
|
||||||
|
|
||||||
|
**검증**
|
||||||
|
|
||||||
|
`tests/test_dashboard_authentication.py::test_verify_credentials_uses_constant_time_comparison_for_both_fields`에서 성공 및 두 필드가 모두 잘못된 경우에 두 비교의 호출 순서와 인자를 계측한다.
|
||||||
|
|
||||||
|
**검증 분류**
|
||||||
|
|
||||||
|
- 수준: unit
|
||||||
|
- 백엔드: pytest monkeypatch
|
||||||
|
- 케이스: 정상 credential, 잘못된 ID와 password
|
||||||
|
|
||||||
|
**상태 불변조건**
|
||||||
|
|
||||||
|
일반 동등 비교나 한 필드 실패에 따른 short-circuit를 사용하지 않는다.
|
||||||
|
|
||||||
### REQ-001.04-AC01 — 실패 지연과 일반 오류
|
### REQ-001.04-AC01 — 실패 지연과 일반 오류
|
||||||
|
|
||||||
**판정 기준**
|
**판정 기준**
|
||||||
@@ -406,6 +426,46 @@ README와 Kubernetes 문서에 HTTPS, proxy allowlist, rate limit, secret 주입
|
|||||||
|
|
||||||
실제 credential·secret 값이 문서와 manifest에 없다.
|
실제 credential·secret 값이 문서와 manifest에 없다.
|
||||||
|
|
||||||
|
### REQ-001.10-AC02 — 인증 후 기존 페이지 호환성
|
||||||
|
|
||||||
|
**판정 기준**
|
||||||
|
|
||||||
|
유효한 Dashboard 인증 cookie로 인증하면 기존 page query parameter를 유지한 채 요약, 자산/마감, 분류 규칙, 확인필요 큐와 월정산 핵심 페이지가 예외 없이 예상 내용을 렌더링한다.
|
||||||
|
|
||||||
|
**검증**
|
||||||
|
|
||||||
|
`tests/test_dashboard_app.py::test_streamlit_apptest_core_pages_use_synthetic_fixture_db`와 `tests/test_dashboard_authentication_app.py::test_valid_cookie_allows_dashboard_and_is_not_stored_in_session_state`를 실행한다.
|
||||||
|
|
||||||
|
**검증 분류**
|
||||||
|
|
||||||
|
- 수준: regression integration
|
||||||
|
- 백엔드: Streamlit AppTest, synthetic SQLite
|
||||||
|
- 케이스: 인증된 핵심 page query와 기존 gateway
|
||||||
|
|
||||||
|
**상태 불변조건**
|
||||||
|
|
||||||
|
기존 SQLite schema, page query와 gateway contract를 변경하지 않는다.
|
||||||
|
|
||||||
|
### REQ-001.10-AC03 — MCP 인증 범위 분리
|
||||||
|
|
||||||
|
**판정 기준**
|
||||||
|
|
||||||
|
Dashboard cookie 인증은 MCP endpoint의 인증을 의미하지 않으며 MCP server 진입점, transport와 port를 변경하지 않는다.
|
||||||
|
|
||||||
|
**검증**
|
||||||
|
|
||||||
|
Base-to-head diff에서 MCP 인증·진입점·transport·port를 담당하는 `jarca_ledger_mcp/server.py`, `jarca_ledger_mcp/adapters/mcp/**`, `tests/test_mcp_http_runtime.py`의 불변성을 확인하고 기존 stdio, streamable HTTP와 invalid transport 회귀 test를 실행한다.
|
||||||
|
|
||||||
|
**검증 분류**
|
||||||
|
|
||||||
|
- 수준: static/regression
|
||||||
|
- 백엔드: Git diff, pytest
|
||||||
|
- 케이스: MCP source, stdio, streamable HTTP, invalid transport
|
||||||
|
|
||||||
|
**상태 불변조건**
|
||||||
|
|
||||||
|
Dashboard와 MCP 인증 경계를 결합하지 않으며 MCP 인증 상태를 변경하지 않는다.
|
||||||
|
|
||||||
### REQ-001.11-AC01 — 안전한 관찰성
|
### REQ-001.11-AC01 — 안전한 관찰성
|
||||||
|
|
||||||
**판정 기준**
|
**판정 기준**
|
||||||
|
|||||||
Reference in New Issue
Block a user