SAML 2.0 VS. JWT: FEDERATED identifikatsiya va SAMLni tushunish

Ushbu xabar dastlab "SAML 2.0 VS." deb e'lon qilindi. JWT: FEDERATED identifikatsiya va SAMLni tushunish "Levvel Blogidagi.

Ushbu xabar API xavfsizligi haqidagi doimiy muhokamamizni davom ettiradi va SAML va JSON veb-tokenlari (JWTs) mavzulariga bag'ishlangan turkumdagi birinchi bo'lib chiqadi. Ushbu seriya Raqamli imzo seriyasida va API xavfsizligi va veb-ilovalar seriyasida muhokama qilingan tushunchalarga asoslanadi.

Ushbu seriyaning birinchi qismida SAML 2.0-dan foydalanish holatlari va talablari ko'rib chiqiladi. SAML 2.0-dan foydalanish holatlari ko'p bo'lsa-da, biz veb-dasturga bir marta kirish uchun va SOAP Web Services va WS-Security-da SAML 2.0-dan foydalanish tokenlaridan foydalanishga e'tibor qaratamiz, chunki ular JWT-ni API-lar bilan ishlatishda yordamchi. .

Bu narsa bir muncha vaqt bo'ldi; Men 2011 yilda IBM Impact-da SAML-dan SOAP veb-xizmatlari va korxonalarga xizmat ko'rsatish avtobuslarida (ESB) foydalanish haqida taqdimot qildim. Men birinchi marta JWT, OAuth2 va OpenID Connect xususiyatlarini ko'rganimda, men allaqachon ishlagan narsaga o'xshash narsani ko'rdim. Shunga o'xshash, ammo sodda.

SAML NIMA?

SAML - bu xavfsizlik munosabatlarining texnik qo'mitasi tomonidan tuzilgan OASIS spetsifikatsiyalarining oilasi bo'lib, u ishonch munosabatlarida ishtirok etadigan ishtirokchilarga "foydalanuvchi autentifikatsiyasi, huquqi va atribut ma'lumotlarini uzatish uchun XML asosidagi asos" ni tavsiflaydi. Xavfsizlik xizmatlari texnik qo'mitasi o'z veb-saytida shiori bor:

Onlayn sheriklar o'rtasida xavfsizlik ma'lumotlarini yaratish va almashish uchun standart, XML asosidagi asosni aniqlash va qo'llab-quvvatlash.

Bu juda yaxshi SAML haqida. SAML spetsifikatsiyasi har qanday foydalanish holatlarida mavjud bo'lgan bir nechta aktyorlarni belgilaydi: Identifikator Provayder (IdP), Relying Party (RP) yoki Service Provider (SP) va direktor. IdP printsiplarini tasdiqlaydi va tokenlarni (yoki tasdiqlarni) chiqaradi. SP - bu himoyalangan va unga kirishni istagan har qanday rahbarning autentifikatsiyasi va avtorizatsiyasini talab qiladigan ilova yoki manba. Printsipial (odatda foydalanuvchi, garchi tizim aktsioneri bo'lsa ham) autentifikatsiya qilinishi mumkin bo'lgan mantiqiy ob'ekt hisoblanadi.

Autentifikatsiya - bu tizim uchun uning identifikatorini tasdiqlovchi printsipial jarayon. Avtorizatsiya - bu avtorizatsiya qilingan printsipial tizimga kirishga ruxsat berilganligi to'g'risida qaror qabul qilingan himoyalangan tizim (bu holda SP). Ba'zida autentifikatsiya qilish va avtorizatsiya qilish to'g'risidagi qarorlar SP-dan ESB yoki Security Gateway kabi vositachiga yuklanadi.

SAML 2.0 token yoki tasdiqlash (spetsifikatsiya ishlatadigan atama) bu quyidagilar to'g'risidagi ma'lumotlarni o'z ichiga olgan (yoki o'z ichiga olishi mumkin) XML hujjati:

  • Haqiqiy tasdiqlangan direktor (mavzu)
  • Foydalanuvchini tavsiflovchi xavfsizlik atributlari (SAML atributlari)
  • IdP (emitent) haqida ma'lumot
  • SP haqida ma'lumot (shartlar, auditoriyani cheklash to'g'risidagi ma'lumot)
  • Vaqtning amal qilish muddati (boshlash sanasi, muddati, berish sanasi)
  • Elektron raqamli imzo
  • Mavzuni tasdiqlash usuli
  • Direktor qanday tasdiqlanganligi
  • Shifrlash haqida ma'lumot

Autentifikatsiya qilingan printsipial odatda "mavzu" deb nomlanadi va odatda oddiy foydalanuvchi nomi, foydalanuvchi tomonidan ajratilgan nomi (DN), elektron pochta manzili yoki domenga tegishli foydalanuvchi nomi. Ushbu nom odatda IdP tarkibiga kiradigan foydalanuvchi omborida (LDAP, Active Directory va boshqalar) aniqlangan foydalanuvchiga murojaat qiladi. Keyinchalik foydalanuvchi omborlari haqida ko'proq gaplashamiz.

Xavfsizlik atributlari roli to'g'risidagi ma'lumotlar, LDAP atributlari, SP uchun muhim bo'lgan kontekstga oid atributlar yoki har qanday boshqa narsalarni o'z ichiga olishi mumkin. Ushbu xavfsizlik atributlari da'volarga asoslangan identifikatsiya tizimidagi da'volarga misoldir. SAML - bu da'volarga asoslangan identifikatsiya tizimini joriy qilish misoli. Da'volarga asoslangan identifikatsiya qilish foydalanuvchilar va da'volarni bergan emitent (yoki hokimiyat) to'g'risida identifikatsiya ma'lumotlarini olish uchun aktyorlar, ilovalar yoki tizimlar uchun umumiy asosni ta'minlaydi. Ushbu tizimda da'vo - bu bitta subyekt - emitent boshqa subyekt haqida, printsipial haqida aytadigan bayonot (uni SAML atributi, foydalanuvchi nomi, guruh ma'lumotlari yoki shunga o'xshash narsalar deb o'ylang). Biz buni SAML 2.0 va JWT orqasidagi mavhumlik va nazariya deb ataymiz. Biz shikoyatlar asosida identifikatsiyalashga qaytamiz.

SAML 2.0 spetsifikatsiyasi "Mavzuni tasdiqlash usuli" deb nomlangan kontseptsiyani belgilaydi. Ularning eng keng tarqalgani - bu sub'ektni tasdiqlash usuli. Bu SAML 2.0 tasdiqlashlariga tokenlarning tokenlari sifatida ishlashga imkon beradi. Mavzuni tasdiqlash usuli - bu submen va SAML tasdiqlash talablari o'rtasidagi mantiqiy aloqani tasdiqlovchi mexanizm. Ta'rif bo'yicha, sub'ekt va tokenlarning tokenlariga bo'lgan talablar o'rtasidagi munosabatni o'rnatish uchun qo'shimcha choralar talab qilinmaydi. O'zaro munosabatlar aniq emas. Oldingi muhokamalarimizdan eslashingiz mumkin, haqiqatan ham foydali bo'lgan raqamli imzo juda qiziqdir, chunki bu o'zaro bog'liqlik tushunchasini buzadi. Ammo, odatda, haqiqiy olamda tokchali tokenlar ishlaydi. Raqamli imzoga ega bo'lgan token, shuningdek, ishlamaydiganga qaraganda ancha xavfsizdir (lekin uning cheklovlari mavjud).

Mavzuni tasdiqlashning qolgan ikkita usuli - jo'natuvchi kuponlari va kalitlarga ega bo'lish. Men bir vaqtlar IBM Integration Stack (shu jumladan, Data DataPower) yordamida SAP va boshqa o'nlab tijorat Off Off Shelf (COTS) mahsulotlarini Active Directory Federatsiyasi Server v2.0 (ADFS) bilan IdP sifatida birlashtirgan do'konni qo'llab-quvvatladim. SAP modullari o'ynash tokenlarini qo'llab-quvvatlamadi; faqat yuboruvchi kuponlar va kalitlarni saqlash usullari qo'llab-quvvatlandi. ADFS jo'natuvchi kuponlarini qo'llab-quvvatlamadi; DataPower uchta mavzuni tasdiqlash usullarini qo'llab-quvvatladi. Shunday qilib, SOAP Consumer ADFS-dan SAML-tokenni oldi, DataPower-ga SOAP qo'ng'irog'ini amalga oshirdi, u tokenni tasdiqladi va uni SAML tokenlarini yuboruvchiga yuborganligi uchun almashtirdi, so'ngra so'rovni SAP-ga token yubordi. SP Ushbu integratsiya ishini tavsiflash uchun men ko'pincha "xavfsizlik integratsiyasi" atamasidan foydalanaman.

Quyida SAML 2.0 tokeniga misol keltirilgan:



   https: // idp .levvel.io / sso / saml2 / token 
  
    
    
    
    
      
        
        
      
    
     M9CyzmcJfLg8JDO48590345f9sfdew0 
    
    
    
        [qisqartirish uchun qoldirilgan ...]
    
    
      
        
          [qisqartirish uchun qoldirilgan ...]
        
      
    
  
  
   rcbj@levvel.io 
    
      
    
  
  
    
       https://app1.leevvel.io/login 
    
  
  
    
       Jon 
    
    
       Doe 
    
    
       ma'mur 
       AdvancedView 
    
  
  
      urn: voha: ismlar: tc: SAML: 2.0: ac: sinflar: aniqlanmagan  -ni tanlang
    
  

Shubhasiz, bu XML hujjati. Bu yuqori darajadagi element Asserttion deb nomlangan (shu sababli SAML Asserttion nomi). Men buni ba'zida SAML belgisi deb ham atayman, garchi bu xususiyati olinmagan bo'lsa. Quyida quyidagi elementlar va ularning vazifalari keltirilgan:

  • Emitent: tasdiqni bergan IDP URL manzili.
  • Imzo: Imzo elementi allaqachon qoplangan.
  • Mavzu: NameID elementi (tasdiqlangan asosiy nomi) va SubjectConfirmation elementi. SubjectConfirmation elementi ushbu token tomonidan ishlatiladigan mavzuni tasdiqlash usulini belgilaydi. Ushbu ketma-ketlikda tavsiflangan holatlar uchun bu har doim tokenga ega bo'ladi.
  • Shartlar: Tomoshabinlar haqida ma'lumot beruvchi va ushbu tokenning amal qilish muddati ko'rsatilgan ma'lumotlari.
  • AttributeStatement: foydalanuvchini batafsil tavsiflaydigan va SP uchun mazmunli bo'lgan atributlar ro'yxati (odatda SAML atributlari deb nomlanadi).

SAML 2.0 spetsifikatsiyasi autentifikatsiya va avtorizatsiya bilan bog'liq muammolarni hal qiladi. Amaliy nuqtai nazardan, deyarli har doim tasdiqda qo'shimcha ma'lumotlar mavjud va avtorizatsiya bosqichi uchun zarur bo'lgan ishlov berishning qo'shimcha bosqichlari mavjud bo'lib, ulardan foydalanishning eng ahamiyatsiz holatlari bundan mustasno. Bunday holatlardan biri Web App SSO bo'lib, unda har qanday tasdiqlangan foydalanuvchi veb-ilovaga kirish huquqiga ega. SAML 2.0 asosiy tokenlarida odatiy da'volar (SAML Attributes) sifatida berilishi kerak bo'lgan qo'shimcha ma'lumotlarning juda keng tarqalgan namunasi rol ma'lumotlari yoki direktor qatnashadigan guruhlar ro'yxati. SP manbalarini ma'lum rollarda yoki boshqa da'volarda aks ettiradigan avtorizatsiya siyosatini aniqlash va qayta ishlash alohida mavzu.

SAML 2.0 oilasida ko'p sonli holatlar va ixtiyoriy xususiyatlar mavjud bo'lib, men bu erga kira olmayman. Ko'pincha, ular bizning muhokamamiz uchun muhim emas. Shuni yodda tutish kerakki, SAML 2.0 spektri juda moslashuvchan va ko'plab qo'shimcha qismlarga ega. Xuddi shunday, ba'zi bir qismlarning qismlari biroz noaniq va tushuntirish uchun ochiq bo'lishi mumkin; SAML 2.0 token siz yuqorida aytilganga o'xshash yoki umuman boshqacha ko'rinishi mumkin.

SAMLNING QISHLOQ TARIXI

Men har doim narsalarning qanday bo'lishi kerakligi haqida tarixni ko'rsatishga harakat qilaman, chunki bu kattaroq rasmni ham, uning qismlari qanday qilib unga qanday mos kelishini tushunishga yordam beradi. SAML2, WS-Security va WS-Trust tarixi murakkablik va umidsizlikka to'la; JWT, OAuth2 va OpenID Connect xususiyatlari yozuvchilari ushbu qiyinchiliklarni juda yaxshi bilishgan.

SAML XML, XSD, XML imzo, XML shifrlash, HTTP va SOAP texnik xususiyatlarining yuqori qismiga asoslanadi. SAML 1.0 spektri 2002 yil noyabrda nashr etildi. SAML 1.1 spetsifikatsiyasi shundan ko'p o'tmay, 2003 yil sentyabrda paydo bo'ldi. Bu vaqt ichida Ozodlik Ittifoqi SAML 1.0 kengaytiradigan va natijada SAML 2.0 asosini tashkil etuvchi ishlarni ishlab chiqardi. SAML 1.0 hozirda umuman ishlatilmaydi, garchi men SAML 1.1 ning ishlab chiqarish muhitida o'tgan yil davomida ishlatilishini ko'rganman. SAML 2.0 odatiy hol bo'lib, Federatsiya va SSO ko'pgina yirik korxonalarda ishlaydi. U OAuth 2.0 va OpenID Connect tomonidan rad etila boshlaydi.

SAML 1.1 va 2.0 bitta spets emas, balki o'zaro bog'liq xususiyatlar turkumidir. Men ushbu qismdagi ro'yxatni to'g'ridan-to'g'ri Oasis veb-saytidan chiqarib tashlayman; dahshatli emas, ammo meni doimiy ravishda ko'rib chiqishga majbur qiladi. Men ushbu seriya davomida vaqti-vaqti bilan havola qilaman.

SAML 1.1

Tasdiqlangan texnik xususiyatlar to'plami quyidagilardan iborat:

  • Tasdiqlash va protokol (oasis-sstc-saml-core-1.1)
  • Bog'lanishlar va profillar (oasis-sstc-saml-bindings-1.1)
  • Muvofiqlik dasturining o'ziga xos xususiyati (oasis-sstc-saml -form-1.1)
  • Lug'at (oazis-stst-saml-lug'at-1.1)

SAML 1.1 uchun XML sxema fayllari:

  • Tasdiqlash sxemasi (oasis-sstc-saml-sxemasi-tasdiqlash-1.1.xsd)
  • Protokol sxemasi (oasis-sstc-saml-sxema-Protocol-1.1.xsd)

1.1 versiyasining texnik xususiyatlari bilan bog'liq bo'lgan qo'shimcha hujjatlar:

  • Errata (sstc-saml-errata-11-qoralama-16)
  • Xavfsizlik va maxfiylik masalalari (oasis-sstc-saml-sec-consider-1.1)
  • Versiya 1.1 Nashrlar (sstc-saml-issues-1.1-loyihasi-01)
  • V1.0 dan farqlar (sstc-saml-diff-1.1-loyihasi-01)

SAML 2.0

Asl tasdiqlangan spetsifikatsiyalar to'plami (xato belgilarisiz) quyidagilardan iborat:

  • Tasdiqlash va protokollar (shuningdek, "Asosiy" nomi bilan ham tanilgan)
  • Tasdiqlash sxemasi
  • Protokollar sxemasi
  • Bog'lash
  • Profillar
  • DCE atribut profilining sxemasi
  • ECP profil sxemasi
  • X.500 atribut profilining sxemasi
  • XACML atribut profilining sxemasi
  • Metadata
  • Metadata sxemasi
  • Haqiqiylikni tekshirish konteksti
  • Muvofiqlik talablari
  • Xavfsizlik va maxfiylik masalalari
  • Lug'at (HTML-da ham mavjud)

NIMA KERAK

Keyingi postda biz SAML 2.0 uchun har xil foydalanish holatlarini va ularning har birining misollarini ko'rib chiqishni boshlaymiz. Serialning ushbu qismi, albatta, eng hayajonli emas, lekin bu SAML 2.0 va JWT o'rtasida batafsil taqqoslash uchun bizning maqsadimizga qo'yilgan muhim qadam bo'lib xizmat qiladi. Shuningdek, bu mavzu bilan tanish bo'lmaganlar uchun foydali kirish vositasi bo'lib xizmat qiladi. Yangiliklarni kuzatib boring, xabardor bo'lib boring; Biz bilan qoling; SAML va JWT mavzusida ko'proq narsa bor.