Bosh sahifa Wiki SAML

SAML

SAML — Security Assertion Markup Language nomli, identifikatsiya va avtorizatsiya ma’lumotini xavfsizlik domenlari orasida almashish uchun XMLga asoslangan standart. Korporativ single sign-on tizimlarida SAML 2.0 keng qo‘llanadi: identity provider foydalanuvchini autentifikatsiya qiladi, service provider esa imzolangan assertion asosida lokal sessiya yaratadi. SAML foydalanuvchi parolini service providerga uzatmaydi.

Asosiy rollar va assertion

Identity provider, ya’ni IdP autentifikatsiyani bajaradi. Service provider — foydalanuvchi kirmoqchi bo‘lgan dastur. User agent odatda brauzer bo‘lib, ikki tomon orasidagi xabarlarni tashiydi. SAML assertion ichida quyidagi ma’lumotlar bo‘lishi mumkin:

  • subject — foydalanuvchini ifodalovchi NameID;
  • authentication statement — qachon va qanday autentifikatsiya qilingani;
  • attribute statement — email, guruh yoki boshqa atributlar;
  • conditions — amal muddati va ruxsat etilgan audience.

Assertion yoki uning tashqi response elementi IdP private keyi bilan imzolanadi. Service provider IdP metadata’sidan olingan sertifikat orqali imzoni tekshiradi. XML Signature tekshiruvi xavfsiz kutubxona bilan bajariladi; dastur imzo tekshirilgan elementning aynan o‘zidan qiymatlarni o‘qishi kerak. Aks holda XML signature wrapping hujumida tekshirilgan va ishlatilgan elementlar farq qilishi mumkin.

Web SSO oqimi

SP-initiated oqimda foydalanuvchi dasturdan boshlaydi. Service provider AuthnRequest yaratib, brauzerni IdPga yo‘naltiradi. IdP foydalanuvchini tekshiradi va SAML Response’ni brauzer orqali SPning Assertion Consumer Service endpointiga yuboradi. RelayState foydalanuvchini dasturdagi boshlang‘ich manzilga qaytarish uchun ishlatiladi, lekin open redirectga aylanmasligi uchun qiymat tekshiriladi.

IdP-initiated oqimda foydalanuvchi IdP portalidan dastur tanlaydi va oldingi AuthnRequest bo‘lmasdan response oladi. Bunda javobni ma’lum so‘rov bilan korrelatsiya qilish imkoniyati kamroq. Yuqori xavfsizlik talabida SP-initiated oqim, qisqa amal muddati va bir martalik response identifikatorlarini kuzatish afzal ko‘riladi.

Binding va metadata

SAML binding protokol xabarining HTTP orqali qanday tashilishini belgilaydi. HTTP-Redirect ko‘pincha AuthnRequest uchun, HTTP-POST esa base64 kodlangan SAML Response uchun ishlatiladi. Artifact binding brauzerga to‘liq assertion bermay, qisqa artefakt uzatadi va tomonlar server-to-server kanal orqali haqiqiy xabarni oladi.

Metadata entity ID, endpoint URLlari, qo‘llanadigan bindinglar va ochiq sertifikatlarni e’lon qiladi. Metadata ishonchli kanal orqali olinadi va o‘zgarishi nazorat qilinadi. Sertifikat rotatsiyasida IdP yangi kalitni oldindan metadata’ga qo‘shib, service providerlar yangilanishi uchun vaqt beradi.

Tekshiruv shartlari

Service provider response destination, recipient, issuer, audience, NotBefore va NotOnOrAfter vaqtlarini tekshiradi. Serverlar soati NTP bilan sinxronlanadi; kichik clock skew ruxsat qilinsa ham, u cheksiz bo‘lmaydi. Assertion replayini cheklash uchun IDlar amal muddati davomida qayta qabul qilinmaydi. SAML response brauzer orqali kelgani sababli TLS, CSRFga qarshi oqim korrelatsiyasi va xavfsiz lokal sessiya cookie’lari ham zarur.

NameID va atribut xaritasi

NameID email, persistent pseudonym yoki transient identifikator formatida kelishi mumkin. Service provider ayni IdP bilan kelishilgan formatni tekshiradi va transient qiymatni doimiy hisob kaliti sifatida saqlamaydi. Bir xil atribut nomi turli IdPda boshqa semantikaga ega bo‘lishi mumkin; mapping tenant kesimida sozlanadi. Bo‘sh yoki ko‘p qiymatli guruh atributini noto‘g‘ri parse qilish ruxsat xatosiga olib keladi.

Shifrlangan assertion

SAML assertion brauzer orqali tashilgani uchun undagi atributlar foydalanuvchi qurilmasida ko‘rinishi mumkin. XML Encryption assertionni service provider public keyi bilan himoyalaydi. Shifrlash signature tekshiruvini almashtirmaydi: SP avval xavfsiz decrypt qilib, keyin belgilangan tartibda imzo va barcha shartlarni tekshiradi. Kalit rotatsiyasida decrypt uchun eski private key o‘tish davrida saqlanishi mumkin.

Bog‘liq tushunchalar

Identity provider, Service provider, Single sign-on, SAML assertion, XML Signature, Metadata, NameID