SAML2 va JWT: taqqoslash

Lock & Key / Kayl Pearson

Ushbu xabar SAML2 va JWT haqidagi muhokamamizni yakunlaydi. Bu erda biz ikkita texnologiyalarning xususiyatlari va foydalanish holatlarini taqqoslashni ko'rib chiqamiz. JWT va SAML2 ni to'g'ridan-to'g'ri taqqoslash qiyin. Ushbu seriyani ko'rib chiqqanimizdek, ushbu xususiyatlar bilan birgalikda ishlaydigan xususiyatlarni hisobga olish kerak.

JWT uchun biz quyidagilarni hisobga olishimiz kerak:

  • OAuth2 o'ziga xosliklar oilasi
  • Xususiyatlar oilasi OpenID ulanish
  • JWE
  • JWS

SAML2 uchun biz e'tiborga olishimiz kerak

  • SAML2 o'ziga xosliklar turkumiga kiradi
  • XML raqamli imzo
  • XML shifrlash
  • WS-Xavfsizlik
  • WS-Trust

Quyida SAML2 va JWT o'rtasidagi asosiy farqlar yig'ilgan. Ushbu xabarning asl nusxasida jadval formati ishlatilgan, ammo Medium.com jadvallarni qo'llab-quvvatlamaydi.

Yoshi

SAML2: SAML 1.0 2002 yilda taqdim etilgan; SAML2 2005 yilda taqdim etilgan.

JWT: JWT RFC 2014 yilda nashr etilgan. JWT ancha yangi.

Qabul qilish

SAML2: SAML2 - bu SSO Enterprise uchun defekto-standart. Bu bir muncha vaqt bo'ldi.

JWT: JWT, OAuth2 va OpenID Connect ijtimoiy media va texnologik startaplarda keng tarqalgan, ammo hozirda korxonaga kirib bormoqda.

Falsafa

SAML2: ko'proq akademik yondashuv. Oddiylik dizaynning maqsadi emas edi. Ushbu funktsiyani amalga oshirish uchun ish vaqti kutubxonalari yaratiladi degan taxmin bor edi.

JWT: oddiy. Dastur ishlab chiqaruvchisi mijoz-kod kodini amalga oshiradi degan taxmin bilan boshlandi. Xususiyatlar pishib etilib, korxonani asrab olish jarayoni boshlanganida, jamoa bundan uzoqlasha boshladi.

Token turlari

SAML2: SAML Tasdiqlash (aniq ko'rsatmalar bilan aniqlangan format)

OAuth2: access_token (JWT bo'lishi mumkin, lekin shart emas)

OIDC: access_token (JWT bo'lishi mumkin) va id-token (JWT bo'lishi kerak).

Ma'lumotlar tarkibi

SAML2: XML (tuzilish XSD bilan aniqlanadi)

JWT: JSON (qiziq, tuzilish JSON Schema tomonidan belgilanmagan)

Hajmi

SAML2: JWT bilan solishtirganda juda katta bo'lishga moyil. Hajmi qaysi maydonlar mavjudligiga, Imzolardan foydalanish va Shifrlashga qarab o'zgaradi.

JWT: SAML2 tokenlaridan ancha kichikroq. Spec imzo sertifikatiga havolani kiritishdan ko'ra uni ishlatishni rag'batlantiradi - katta x509 imzo chekuvchisini yo'q qiladi.

Xabarlar protokollarini qo'llab-quvvatlash

SAML2: Asosan SOAP-ga asoslangan.

JWT: REST API

Bog'lash va transport protokollari

SAML2: SAML2 HTTP POST, HTTP GET, SOAP (stsenariyga bog'liq), JMS (kamdan kam, ammo bo'lishi mumkin) va hokazo bo'lishi mumkin

JWT: HTTPS

Elektron imzolar

SAML2: XML imzosi

JWT: JWS (qo'llab-quvvatlanadigan xesh va shifrlash algoritmlari bir-biridan farq qiladi)

Xabar darajasida shifrlash

SAML2: XML shifrlash

JWT: JWE (qo'llab-quvvatlanadigan shifrlash algoritmlari bir oz farq qiladi) ***

X509 sertifikat vakili

SAML2: X509BinarySecurityToken turi

JWT: JSON veb-kalit xususiyati (JWK)

Core Spec ko'lami

SAML2: Token (SAML Assertion) va asosiy protokolning tuzilishini (Web App SSO uchun) belgilaydi.

JWT: JWT faqat token tuzilishini belgilaydi. OAuth2 va OpenID Connect protokolni aniqlaydi.

Mijoz-infratuzilma

SAML2: Odatda qo'llab-quvvatlanadigan kutubxonalarni talab qiladi (og'ir)

JWT: Ko'pincha oddiy HTTP so'rovini yaratish orqali amalga oshiriladi. Imzo va shifrlash ushbu qoidaga istisno hisoblanadi. *

Mavzuni tasdiqlash usulini qo'llab-quvvatlash

SAML2: SAML2 Bearer Tokens, Kalit egasi va Yuboruvchi Vuches-ni qo'llab-quvvatlaydi.

JWT: JWT dastlab Bearer Tokens-ni qo'llab-quvvatlaydi. Kalit egasi (egalik huquqini tasdiqlovchi dalillar 2016 yil aprelda qo'shilgan).

Delegatsiya va boshqa shaxslarni o'zlashtirish (OnBehalfOf va ActAs)

SAML2: WS-Trust spetsifikatsiyalarida aniqlangan

JWT: OAuth2 kengaytmasi (OAuth2 Token Exchange Spec)

Ishonch do'konining dinamik yangilanishlari va meta-ma'lumotlarning nashr etilishini qo'llab-quvvatlash.

SAML2: WS-Federatsiya spetsifikatsiyasi ushbu ma'lumotni qanday chop etishni aniqlaydi. Ammo, u hamma uchun ishlatilmaydi. Mijozlar tomonidan imzo sertifikati ishonchli do'konini yangilash uchun IdP tomonidan e'lon qilingan ma'lumotlarni dinamik ravishda olish juda kam uchraydi.

JWT: OpenID Connect Discovery spetsifikatsiyasi IdP meta-ma'lumotlarini nashr etadigan meta-ma'lumotlarning so'nggi nuqtasini belgilaydi. Ushbu ma'lumotlarga kirish va ishonchli do'konni dinamik ravishda qurish / yangilash imkoniga ega bo'lgan mijozlarni qurish tavsiya etiladi. **

* Kutubxonalardan foydalanish deyarli har doim noldan qilingan so'rovlar / so'rovlarni tuzishda tavsiya etiladi.

** Ushbu bitta tafsilot, imzolov guvohnomasini yangilash kerak bo'lganda 1000 soatni tejashga imkon beradi.

*** JWE va XML shifrlash bir qator muhim farqlarga ega, ammo men bu seriyaga hali ulgurmadim :).

XML DSig va JSON veb-imzo seriyasida keltirilgan barcha farqlar bu erda ham qo'llaniladi.

Rasm: Lock & Key / Kayl Pearson