adorsys / adorsys/status-list-server
Define credential registration and rotation lifecycle
- 主要語言
- Rust
- 星號
- 22
- 分支
- 5
- 平均合併
- 2 天 6 小時
- 30 天內合併 PR
- 47
描述
## Objective
Split issuer credential registration, update, and rotation into clear authorization-controlled workflows.
## Current State
`POST /api/v1/credentials` registers issuer public keys. There is an existing broad issue (#187) about issuer registration ownership. This sub-issue narrows the implementation path so registration and rotation can be worked in smaller PRs.
## Deliverables
- [ ] Define whether first-time registration is public, admin-only, or invitation/onboarding-token protected.
- [ ] Add a separate authenticated credential update/rotation workflow.
- [ ] Prevent accidental overwrite or issuer takeover.
- [ ] Add audit-friendly error cases for duplicate issuer, wrong issuer, malformed JWK, and unsupported key type.
- [ ] Document the chosen lifecycle in README/OpenAPI.
## Acceptance Criteria
- [ ] First registration and later rotation have distinct rules.
- [ ] Existing issuers cannot be taken over by posting a new JWK.
- [ ] Rotation is authenticated and issuer-bound.
- [ ] Tests cover duplicate registration and authorized/unauthorized rotation.
## Verification
- [ ] Handler/service tests
- [ ] OpenAPI updated
- [ ] Demo workflow updated or added
貢獻指南
研究方向
Start by finding the implementation behind `POST /api/v1/credentials` and tracing it into the service layer. Compare the current registration path with update logic, then define and separate first-time registration and authenticated rotation behavior with checks for duplicate/wrong issuer and bad JWK/key-type cases. Review and extend handler/service tests for duplicate registration and authorized vs unauthorized rotation, then update README and OpenAPI to document the two lifecycle flows. Completion is when both paths are enforced with tests and docs reflecting the new rules.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- rust
- 領域
- api, backend, security
- Issue 類型
- 功能
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 48/100