eID MongoliaeID Mongolia

ХӨГЖҮҮЛЭГЧИЙН ГАРЫН АВЛАГА

RP интеграц — иргэнээр нэвтрэлт ба гарын үсэг

Холбогдогч тал (Relying Party — банк, төр, e-үйлчилгээ) eID Mongolia-д холбогдож, иргэнээр утсаар нь нэвтрэлт (authentication) эсвэл хууль ёсны гарын үсэг (signature) хийлгэх 5 алхам. Бүх дуудлага HTTPS дээр, RP-API нь https://eidmongolia.mn/v3.

1RP бүртгүүлж API secret авах

admin.eidmongolia.mn → нэвтрэх → Холбогдогч тал (RP)+ Шинэ RP:

  • Нэр — танай үйлчилгээний нэр (иргэнд харагдана, ж: «Хаан Банк»)
  • ЭрхAUTH,SIGN,CERT (хэрэгцээгээрээ)
  • IP allowlist (сонголт) — танай серверийн IP/CIDR. Тохируулбал зөвхөн тэр IP-ээс дуудлага зөвшөөрнө

Бүртгэмэгц UUID ба API secret (rp_sk_…) гарна. Secret зөвхөн нэг удаа харагдана — даруй найдвартай хадгалаарай (танай backend-д л, нууцаар).

2Дуудлага бүрийг secret-ээр баталгаажуулах

RP-API дуудлага бүрд Authorization: Bearer <secret> header илгээнэ. Secret-гүй эсвэл буруу бол 401 буцна. IP allowlist тохируулсан бол зөвшөөрөгдөөгүй IP-ээс 403.

Authorization: Bearer rp_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

3Нэвтрэлт (authentication) эхлүүлэх

Иргэнийг РД, иргэний дугаар эсвэл ETSI-ээр заана (аль нь ч болно — сервер таьна). Иргэний утас руу push очно.

curl -X POST https://eidmongolia.mn/v3/authentication/notification/etsi/<РД-эсвэл-civil_id> \
  -H "Authorization: Bearer $RP_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "relyingPartyUUID": "<танай-UUID>",
    "relyingPartyName": "Хаан Банк",
    "certificateLevel": "QUALIFIED",
    "signatureProtocol": "ACSP_V2",
    "interactions": [
      {"type":"displayTextAndPIN","displayText60":"Хаан Банк-д нэвтрэх"}
    ]
  }'

# Хариу: {"sessionID":"...","vc":{"value":"1234"}}
# vc.value — иргэний утсан дээр харагдах баталгаажуулах код (VC). UI-даа харуулна.

4Гарын үсэг (signature) эхлүүлэх

Баримтын SHA-256 digest (base64)-ийг илгээнэ. Иргэн PIN2-оор хууль ёсны (non-repudiation) гарын үсэг зурна.

# 1) Баримтын digest
DIGEST=$(printf '%s' "Зээлийн гэрээ №42" | openssl dgst -sha256 -binary | base64)

# 2) Sign session
curl -X POST https://eidmongolia.mn/v3/signature/notification/etsi/<РД-эсвэл-civil_id> \
  -H "Authorization: Bearer $RP_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "relyingPartyUUID": "<танай-UUID>",
    "relyingPartyName": "Хаан Банк",
    "certificateLevel": "QUALIFIED",
    "signatureProtocol": "ACSP_V2",
    "digest": "'"$DIGEST"'",
    "hashType": "SHA256",
    "interactions": [
      {"type":"displayTextAndPIN","displayText60":"Гэрээнд гарын үсэг зурах"}
    ]
  }'

# Хариу: {"sessionID":"...","vc":{"value":"5678"}}

5Үр дүнг хүлээх (session poll)

sessionID-аар session-ийн төлвийг асууна. Long-poll — иргэн баталгаажуулмагц (эсвэл timeoutMs дуустал) шууд буцна.

curl "https://eidmongolia.mn/v3/session/<sessionID>?timeoutMs=30000" \
  -H "Authorization: Bearer $RP_SECRET"

# COMPLETE болоход:
# {
#   "state": "COMPLETE",
#   "result": { "endResult": "OK", "documentNumber": "..." },
#   "signature": { "value": "MEQCI…", "signatureAlgorithm": "ecdsa-with-SHA256" },
#   "cert": { "value": "MIID…" }   // иргэний X.509 гэрчилгээ (subject-д РД, нэр)
# }

endResult: OK бол амжилттай. signature.value нь баримтын гарын үсэг, cert.value нь иргэнийг таних гэрчилгээ (eIDAS qualified).


Endpoint-ийн товч жагсаалт

ЗорилгоEndpoint
Нэвтрэлт (push)POST /v3/authentication/notification/etsi/{id}
Гарын үсэг (push)POST /v3/signature/notification/etsi/{id}
Гэрчилгээ авахPOST /v3/signature/certificate/{documentNumber}
Session төлөвGET /v3/session/{sessionID}?timeoutMs=30000

Аюулгүй байдлын зөвлөмж

Тусламж хэрэгтэй юу? Дэмжлэгийн баг эсвэл амьд demo үзээрэй.