Aller au contenu

Байгууллага (Legal Person) — Onboarding заавар

Огноо: 2026-07-04. Хамрах хүрээ: байгууллагыг eID платформд бүртгэх, төлөөллийн эрх удирдах, e-Seal (байгууллагын тамга) хэрэглэх, RP (e-service) талын интеграц. Дизайн үндэслэл: docs/ORG_AUTH_SIGN_PLAN.md; стандарт: SK ID Solutions SK-CPR-ORG v13.0, ETSI EN 319 412-1/-3/-5.

Гол зарчим (Эстонийн загвар): Байгууллагад апп-данс, утас, PIN, threshold түлхүүр БАЙХГҮЙ. Байгууллагын бүх үйлдэл гурван механизмаар: 1. Байгууллагаар нэвтрэх = хувь хүн өөрийн eID-гээр нэвтэрч, RP нь төлөөллийн бүртгэлээс эрхийг нь real-time шалгана (эрх нь cert дотор БИШ — бүртгэлд). 2. Байгууллагын нэрийн өмнөөс гарын үсэг = төлөөлөгчийн ХУВИЙН PIN2 cert + session-д onBehalfOf тэмдэглэгээ (сервер эрхийг шалгасан). 3. e-Seal (тамга) = сервер талын HSM түлхүүртэй, NTRMN- cert-тэй автомат тамга — интерактив биш (нэхэмжлэх, лавлагаа г.м. системээс шууд).


1. Идентификатор

Зүйл Утга
ETSI identifier NTRMN-<улсын бүртгэлийн дугаар> (ETSI EN 319 412-1 §5.1.4, NTR semantics)
Cert subject SERIALNUMBER=<бүртгэлийн дугаар>, CN/O=<нэр>, organizationIdentifier(2.5.4.97)=NTRMN-<дугаар>, C=MN
Issuing CA Gerege Organization Issuing CA (L2) — SubjectTypeForEtsi-ээр автомат сонгогдоно

2. Байгууллага бүртгэх (оператор/admin)

Admin консолын Байгууллага таб эсвэл API:

POST /v3/admin/organizations            (org:write)
  {"orgRegister":"1234567","name":"Тест ХХК","nameLatin":"TEST LLC","activate":false}
  • activate:falsePENDING статустай үүсч, баталгаажуулалтын дараа админ FSM-ээр ахиулна.
  • FSM: PENDING → VERIFIED → ACTIVE → SUSPENDED/REVOKED (SUSPENDED-ээс сэргээж болно; REVOKED эцсийн — идэвхтэй seal cert автоматаар цуцлагдаж OCSP/CRL-д орно).
PATCH /v3/admin/organizations/{etsi}    {"status":"ACTIVE"}

3. Төлөөллийн эрх (representation)

Эрх бүхий төлөөлөгч бүр өөрөө eID-тэй (enroll хийсэн) байх ёстой:

POST /v3/admin/organizations/{etsi}/representatives   (org:write)
  {"personEtsi":"PNOMN-…","role":"Гүйцэтгэх захирал","rightType":"ADMIN",
   "source":"MANUAL","evidenceRef":"тушаал №…","validTo":null}
DELETE /v3/admin/organizations/{etsi}/representatives/{id}
  • rightType: ADMIN (байгууллага үүсгэсэн/холбосон — доороо MANAGER гарын үсэг зурагч нэмж/хасаж чадна) | MANAGER (гарын үсэг зурагч — доороо хэн ч нэмж/хасаж чадахгүй).
  • source: REGISTRY (УБЕГ/DAN-аас — ирээдүйд автомат sync) | MANUAL (баримтаар батламжилсан).
  • Хугацаа (validTo) дууссан, идэвхгүй болгосон, эсвэл байгууллага нь ACTIVE биш бол эрх lookup-д ХАРАГДАХГҮЙ.

4. RP талын интеграц

4.1 Байгууллагаар нэвтрэх

  1. Хэрэглэгчийг ердийн personal auth-аар нэвтрүүлнэ (/v3/authentication/...).
  2. Дараа нь:
    GET /v3/organization/representations/etsi/{personEtsi}     (RP auth)
    → {"personEtsi":"PNOMN-…","representations":[
         {"orgEtsi":"NTRMN-…","orgName":"…","rightType":"ADMIN","role":"…", …}]}
    
  3. UI дээр "аль байгууллагаар үргэлжлүүлэх вэ" сонголт гаргаж, сонгосон байгууллагын контекстээр session үүсгэнэ. Эрх өдөр бүр өөрчлөгдөж болно — session бүрд шалгана.

4.2 Байгууллагын нэрийн өмнөөс гарын үсэг

Sign request-д onBehalfOf нэмнэ:

POST /v3/signature/notification/etsi/{personEtsi}
  { …, "onBehalfOf":"NTRMN-1234567" }
- Сервер төлөөллийн эрхийг session үүсэх мөчид шалгана: эрхгүй бол 403, таньгдаагүй (anonymous) хэрэглэгчид 403. - Утасны баталгаажуулах дэлгэцэд "Та X-ийг төлөөлөн гарын үсэг зурж байна" гарна. - Session status (GET /v3/session/{id})-д onBehalfOf: {orgEtsi, orgName} блок нэмэгдэнэ; гарын үсэг өөрөө хэвээр хувь хүний PIN2 cert-ээр (крипто өөрчлөлтгүй). - ADMIN ба MANAGER аль аль нь байгууллагын нэрийн өмнөөс дангаараа гарын үсэг зурж чадна (крипто талд хамтын co-sign шаардлага байхгүй); олон гарын үсэг цуглуулах шаардлага гарвал энэ нь RP-ийн дүрэм (Эстонитой ижил).

4.3 e-Seal (байгууллагын тамга)

RP-д SEAL permission олгогдсон байх ёстой (admin RP бүртгэлийн permissionsAUTH,SIGN,SEAL); first-party (өөрийн web) чөлөөтэй.

POST /v3/seal/certificate/{orgEtsi}    — seal түлхүүр + cert гаргалт (эсвэл admin-аар:
                                          POST /v3/admin/organizations/{etsi}/seal-certificate)
GET  /v3/seal/certificate/{orgEtsi}    — идэвхтэй cert (validation-д)
POST /v3/seal/{orgEtsi}                — тамгалалт:
  {"digest":"<base64 SHA-256/384/512>"} → {"signature":{"value","signatureAlgorithm"},
                                            "cert":{"value","certificateLevel"},"sealedAt"}
  • Интерактив биш, синхрон — PIN/push байхгүй (SK e-Seal загвар).
  • Байгууллага ACTIVE биш, cert цуцлагдсан/superseded бол 409 (fail-closed).
  • Cert profile (SK-CPR-ORG): KeyUsage = зөвхөн nonRepudiation; EKU байхгүй; QCStatements = QcCompliance + QcType=eseal; policy QCP-l. SMARTID_SEAL_QSCD=true (бодит QSCD/HSM) үед + QcSSCD, policy QCP-l-qscd, түвшин QSCD.

4.4 Гарын үсэг зурагчийг RP талаас удирдах (self-service)

ADMIN эрхтэй төлөөлөгч RP-ийн UI-аас (admin консол заавал биш) байгууллагадаа MANAGER гарын үсэг зурагч нэмж/хасаж чадна. Бүх endpoint RP auth + ORG_LINK_WRITE permission шаардана; {actingPersonEtsi} нь тухайн байгууллагын ADMIN төлөөлөгч байх ёстой (эс бөгөөс 403). {orgRegister} = байгууллагын улсын бүртгэлийн дугаар.

GET    /v3/organization/signers/{orgRegister}/etsi/{actingPersonEtsi}
       → одоогийн гарын үсэг зурагчид (баталгаажсан/хүлээгдэж буй төлөвтэй)
POST   /v3/organization/signers/{orgRegister}/etsi/{actingPersonEtsi}
       {"signerRegNo":"<нэмэх иргэний РД>","role":"Нягтлан бодогч"}
       — нэмэгдэх эрх ҮРГЭЛЖ MANAGER (rightType-ийг үл хэрэгснэ); иргэн рүү sign-push илгээж
         баталгаажуулалт хүснэ.
DELETE /v3/organization/signers/{orgRegister}/etsi/{actingPersonEtsi}?signer=<РД>
POST   /v3/organization/signers/{orgRegister}/etsi/{actingPersonEtsi}/resend?signer=<РД>
       — баталгаажаагүй зурагч руу sign-push дахин илгээнэ.

Байгууллагын латин нэрийг (ICAO/latin, cert-д ордог) зөвхөн ADMIN засна:

PUT /v3/organization/name-latin/{orgRegister}/etsi/{actingPersonEtsi}
    {"nameLatin":"TEST LLC"}

РД (signerRegNo) нь регистрийн дугаар — том/жижиг үсэг ялгаагүй (lookup lowercase); nameLatin нь ICAO канон тул томоор хадгалагдана (Идентификаторууд).

4.5 Revocation шалгалт

  • OCSP: POST /ocsp — нэг endpoint; responder нь хүсэлтийн issuer hash-аар Personal/Organization CA-г өөрөө сонгоно.
  • CRL: GET /crl (Personal CA), GET /crl/org (Organization CA).
  • Discovery: GET /.well-known/eid — organization/seal endpoint-ууд жагсаагдсан.

5. Тохиргоо (сервер)

Env Утга
SMARTID_HSMPROXY_ORG_KEY_LABEL Organization issuing CA-ийн HSM key label (хоосон бол Personal CA fallback)
SMARTID_HSMPROXY_ORG_ISSUING_CERT Organization issuing CA cert (PEM зам)
SMARTID_SEAL_QSCD true = e-Seal leaf түлхүүр HSM-д (QSCD; QcSSCD+QCP-l-qscd). hsmproxy CA provider + creds шаардана (эс бөгөөс fail-fast). false = software seal keys (QUALIFIED). Ceremony: docs/PKI_CA_ONBOARDING.md
SMARTID_SEAL_KEY_PREFIX HSM seal key label угтвар (default eseal-; label = prefix + бүртгэлийн код)

6. Аудит

Бүх үйлдэл audit_events-д: ORG_REGISTER, ORG_STATUS, ORG_REP_ADD/REMOVE, ORG_REP_LOOKUP (аль RP хэний эрхийг шалгасан), ORG_ONBEHALF (OK/DENIED), SEAL_CERT_ISSUE, ORG_SEAL (OK/DENIED).

7. Хязгаарлалт / дараагийн алхам

  • УБЕГ/DAN-ийн хуулийн этгээдийн registry API холбогдоогүй — төлөөлөл одоогоор MANUAL (баримтаар) эх сурвалжтай; API нээгдмэгц REGISTRY sync нэмнэ (Phase 0/1).
  • Staging-д org CA тохируулаагүй бол seal cert Personal CA-аас гарна (caFor fallback) — production-д Organization CA заавал (deploy/README.md cutover жагсаалт).
  • e-Seal-ийн эрх зүйн статус (Монголын хуульд eIDAS "electronic seal"-ийн дүйцэл) хуулийн зөвлөхөөр тодруулах (ORG_AUTH_SIGN_PLAN §4).