Агуулгыг алгасах

Иргэний PKI самбар — RP-facing endpoint-ууд (Go-only extension)

Огноо: 2026-07-04. Хүсэлт: template.gerege.mn/docs/EID_ENDPOINT_REQUESTS.md §B. Иргэн өөрийн PKI-г RP (жишээ нь template.gerege.mn "Миний систем")-ийн самбараар харах: гэрчилгээ + тоолол, RP-scoped үйл ажиллагааны түүх/тоо, холбоотой төхөөрөмж, dashboard тоо.

Нууцлал — зөвхөн тусгайлан зөвшөөрсөн RP

Эдгээр endpoint нь иргэний PII буцаадаг тул бүх RP-д НЭЭЛТТЭЙ БИШ. Дуудагч RP-д PKI_READ эрх байх ёстой — админ RP бүрд тухайлан олгоно (admin консол → Холбогдогч тал (RP) → RP засах → "PKI_READ" checkbox). Эрхгүй RP → 403.

  • first-party (операторын өөрийн web/admin demo) ба dev ("") — үргэлж зөвшөөрөгдөнө.
  • Activity нь RP-scoped: RP зөвхөн ӨӨРИЙН үүсгэсэн session-уудыг хардаг (бусад RP-ийн нэвтрэлт/гарын үсэг задрахгүй).

Танилт: v3-ийн адил Authorization: Bearer <rp_sk_…>.

Endpoint-ууд (бүгд PKI_READ эрх шаардана)

GET /v3/certificates/etsi/{personEtsi}

Иргэний бүх гэрчилгээ + статусын тоолол.

{
  "personEtsi": "PNOMN-...",
  "counts": { "valid": 2, "revoked": 1, "expired": 0, "suspended": 1, "total": 4 },
  "certificates": [
    { "documentNumber":"…", "type":"AUTH|SIGN|SEAL", "serialNumber":"…",
      "certificateLevel":"ADVANCED|QUALIFIED|QSCD",
      "status":"VALID|REVOKED|EXPIRED|SUSPENDED",
      "notBefore":"RFC3339", "notAfter":"RFC3339", "issuerDn":"…" }
  ]
}
Статус хөрвүүлэлт: certificates.status ACTIVE→(notAfter өнгөрсөн бол EXPIRED, эс бол VALID), SUPERSEDED→SUSPENDED, REVOKED→REVOKED.

GET /v3/devices/etsi/{personEtsi}

Иргэний холбоотой төхөөрөмж (идэвхтэй + идэвхгүй).

{
  "personEtsi":"PNOMN-...", "activeCount":1, "total":2,
  "devices":[ { "documentNumber":"…", "platform":"APNS|FCM",
                "enrolledAt":"RFC3339", "active":true, "deactivatedAt":null } ]
}

GET /v3/rp/activity/etsi/{personEtsi} — RP-scoped

Зөвхөн дуудагч RP-ийн үүсгэсэн session-уудын түүх + тоолол. Query: ?flow=AUTHENTICATION|SIGNATURE&limit=20&offset=0

{
  "personEtsi":"PNOMN-...",
  "counts": { "authentication": 42, "signature": 7 },
  "sessions": [ { "sessionId":"…", "flow":"AUTHENTICATION", "outcome":"OK",
                  "docText":"…", "timestamp":"RFC3339" } ],
  "total": 49, "limit": 20, "offset": 0
}
Эх сурвалж: audit_events (SESSION_AUTH/SESSION_SIGN, restart-д хадгалагдана). RP-scoping нь audit detail-ийн crp (creator RP UUID)-ээр шүүгдэнэ.

GET /v3/person/summary/etsi/{personEtsi} — dashboard тоо

Самбарын нэгдсэн тоонууд (нэг дуудлагаар).

{
  "personEtsi":"PNOMN-...", "givenName":"…", "surname":"…",
  "certificates": { "valid":2, "revoked":1, "expired":0, "suspended":1, "total":4 },
  "activity": { "authentication":42, "signature":7 },
  "devicesActive":1, "devicesTotal":2,
  "representationCount":1
}

Well-known

GET /.well-known/eidendpoints.person.{certificates,devices,activity,summary} (PKI_READ тэмдэгттэй).

Хэрэгжилт

  • Service: service.PersonPKIService (server/internal/service/memory/person.go).
  • Handlers: server/internal/httpapi/handlers_person.go (rpAuth + requirePKIRead gate).
  • Эрх: RP.Permissions CSV-д PKI_READ (admin консолын RP form-д checkbox).
  • Байгаа иргэн биш → 404; эрхгүй RP → 403; Bearer-гүй → 401 (RequireRPAuth).