ХӨГЖҮҮЛЭГЧИЙН ГАРЫН АВЛАГА
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/json3Нэвтрэлт (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 |
Аюулгүй байдлын зөвлөмж
- Secret-ийг зөвхөн backend-д хадгална — браузер/гар утсанд хэзээ ч задлахгүй.
- IP allowlist тохируулбал secret хулгайлагдсан ч зөвхөн танай IP-ээс ажиллана.
- id (РД/civil_id)-ийг РД, иргэний дугаар эсвэл ETSI хэлбэрээр илгээж болно — сервер таьна.
- eIDAS qualified орчинд нэмэлт mTLS client cert тохируулж болно (admin → RP → mTLS subject).
- Push ирэхгүй ч иргэн app-аа нээхэд хүсэлт гарч ирнэ (poll fallback) — push-аас бүрэн хамаарахгүй.