Цахим гарын үсэг¶
PDF баримтад PAdES гарын үсэг зурах модуль. Гарын үсэг нь eID Mongolia /v3
интерфэйсээр, иргэний PIN2 сертификатаар зурагдана — хувь хүний нэрийн
өмнөөс, эсвэл төлөөлж чадах байгууллагынхаа нэрийн өмнөөс.
UI: /me/eid/sign.
Урсгал¶
sequenceDiagram
participant U as Иргэн
participant A as Gerege App
participant E as eID Mongolia /v3
U->>A: PDF оруулах (POST /v1/sign/init)
A->>A: PDF-ийн hash (digest) тооцох
A->>E: signature/notification/etsi — digest илгээх
E-->>U: утсанд PIN2 push
U->>E: PIN2 зөвшөөрөх ← хууль зүйн зөвшөөрөл
loop poll
A->>E: session төлөв?
end
E-->>A: гарын үсэг баталгаажлаа
U->>A: GET /v1/sign/{id}/download
A-->>U: PAdES гарын үсэгтэй PDF
| Endpoint | Юу |
|---|---|
POST /v1/sign/init |
PDF оруулж гарын үсгийн session эхлүүлэх |
POST /v1/sign/initiate |
Digest дээр суурилсан session (файлгүй) |
GET /v1/sign/status/{sid} |
Session-ийн төлөв |
GET /v1/sign/{id} |
Гарын үсгийн мэдээлэл |
GET /v1/sign/{id}/download |
Гарын үсэгтэй PDF татах |
Хоёр төрлийн stamp¶
Татах үед хоёр замын аль нэг ажиллана:
- eID Mongolia-ийн албан ёсны stamp —
PAdES-T+ баталгаажуулах хуудас. - Серверийн Document-Signer —
digitorus/pdfsign-ээр PDF дотор PAdES гарын үсэг шигтгэж, иргэний нэр / регистрийг гарын үсгийн талбарт тусгана.
Production-д Document-Signer заавал
SIGN_SIGNER_CERT_FILE ба SIGN_SIGNER_KEY_FILE тохируулаагүй бол
production дээр модуль ачаалагдахгүй. Хөгжүүлэлтийн орчинд түр гэрчилгээ
үүсгэгддэг.
Байгууллагын нэрийн өмнөөс (onBehalfOf)¶
Байгууллагын нэрийн өмнөөс гарын үсэг зурахад:
- Гарын үсэг өөрөө иргэний PIN2 сертификатаар зурагдана (тамга биш).
- eID session-д тухайн байгууллага (
NTRMN-<РД>) уягдаж, төлөөллийн эрх шалгагдана — эрхгүй бол403. - Дуусахад poll-оос баталгаажсан байгууллагын нэрийг авч, гарын үсгийн шалтгаанд «…-ийн нэрийн өмнөөс» гэж тусгана.
Төлөөллийн эрх нь eID PKI профайл-ын «эрх бүхий гарын үсэг зурагчид» бүртгэлээс шалгагдана.
TSA (цагийн тэмдэг)
Бие даасан TSA холболт нь дараагийн үе шат. Одоогоор eID Mongolia-ийн
stamp нь PAdES-T түвшинг хангана.
Sign relay — гуравдагч RP-үүдэд¶
Гуравдагч RP-үүд (жишээ нь template.gerege.mn) eID Mongolia-ийн signature RP
креденшлгүй тул шууд дуудахад 401 авдаг. Gerege App нь тэдний өмнөөс
reverse proxy болно:
RP → https://<host>/rp/sign/v3/* → eidmongolia.mn /v3/*
Authorization: Bearer <SIGN_RELAY_TOKEN>
↓ солигдоно ↓
Authorization: Bearer <жинхэнэ EID_RP_SECRET>
| Шинж | Утга |
|---|---|
| Зам | /rp/sign/* (угтвар хасагдана) |
| RP-ийн баталгаажуулалт | SIGN_RELAY_TOKEN — constant-time харьцуулалт |
| eID-ийн нууц | RP-д хэзээ ч ил болохгүй |
| Унтраах | SIGN_RELAY_TOKEN хоосон = relay идэвхгүй |
Relay-ийн дуудлагууд gateway log-д бүртгэгдэнэ.
Гарын үсгийн зураг ба тамга¶
Баримтад харагдах зураг:
| Endpoint | Юу |
|---|---|
GET/PUT/DELETE /v1/me/signature |
Хувь хүний гарын үсгийн зураг |
GET/PUT/DELETE /v1/me/orgstamp/{regNo} |
Байгууллагын тамга |
PUT /v1/me/latin-name · /org-name-latin/{regNo} |
Латин нэр |
Гадаад зураг татахад SSRF хамгаалалт
Asset татах client нь дотоод сүлжээний хаяг руу хандахыг хориглодог
(isDisallowedFetchIP) — loopback, private, link-local муж бүгд хаалттай.
Аюулгүй байдлын тэмдэглэл¶
- Хууль зүйн зөвшөөрөл нь иргэний утсан дээрх PIN2 — сервер түүнийг орлож чадахгүй.
- Session-ийн төлөв Redis-д түр хадгалагдана.
EID_DISPLAY_TEXTнь утсан дээр харагдах текстийг тодорхойлно; хэт урт бол таслагдана.- Гарын үсгийн үйлдэл бүр audit log-д бичигдэнэ.