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

Цахим гарын үсэг

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

Татах үед хоёр замын аль нэг ажиллана:

  1. eID Mongolia-ийн албан ёсны stampPAdES-T + баталгаажуулах хуудас.
  2. Серверийн Document-Signerdigitorus/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_TOKENconstant-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-д бичигдэнэ.