• sso
  • saml
  • oidc

ความแตกต่างระหว่าง SAML และ OIDC คืออะไร?

ในบทความนี้ เราให้ภาพรวมของโปรโตคอล SAML และ OIDC พร้อมกับกระบวนการรับรองความถูกต้องทั่วไป เราเปรียบเทียบความแตกต่าง ข้อดีและข้อเสียของโปรโตคอลแต่ละตัว นอกจากนี้ เราให้คำแนะนำเกี่ยวกับการเลือกโปรโตคอลเหล่านี้สองแบบตามสถานการณ์ผู้ใช้ที่อาจเกิดขึ้นได้

Darcy Ye
Darcy Ye
Developer

OpenID Connect (OIDC) และ Security Assertion Markup Language (SAML) เป็นโปรโตคอลการรับรองความถูกต้องที่อนุญาตให้ผู้ให้บริการข้อมูลประจำตัว (IdP) มีการตรวจสอบและควบคุมการเข้าถึงของผู้ใช้ โปรโตคอลแต่ละตัวกำหนดกลไกของตัวเองในการดูแลข้อมูลประจำตัวของผู้ใช้ที่รับรองความถูกต้องแล้ว ซึ่งจะถูกใช้ในการให้หรือปฏิเสธการเข้าถึงแอปพลิเคชันที่ได้รับการป้องกัน

SAML และ OIDC คืออะไร?

IdP สามารถเก็บข้อมูลประจำตัวของผู้ใช้ในฐานข้อมูล ผู้ให้บริการ (SP) จะพึ่งพาข้อมูลนี้ในการตรวจสอบผู้ใช้ บางครั้งอาจอนุญาตให้ใช้การตรวจสอบเดียวสำหรับหลายแอปพลิเคชัน (single sign-on) OIDC และ SAML เป็นมาตรฐานที่กำหนดรูปแบบการไหลของข้อมูลเกี่ยวกับข้อมูลประจำตัวของผู้ใช้นี้ระหว่างทั้งสองฝ่าย เป้าหมายสูงสุดของพวกเขาคือการตรวจสอบผู้ใช้ อย่างไรก็ตาม วิธีการพื้นฐานที่พวกเขาใช้ในการบรรลุเป้าหมายนี้แตกต่างกัน

SAML

SAML 2.0 เป็นเวอร์ชันปัจจุบันของมาตรฐานตั้งแต่ปี 2005 ที่ใช้ XML ในการจัดรูปแบบข้อมูลประจำตัว คำขอ และการตอบสนอง XML เป็นมาตรฐานที่สมบูรณ์สำหรับการจัดรูปแบบเอกสารในรูปแบบที่มนุษย์และคอมพิวเตอร์สามารถเข้าใจได้ ในการส่งหรือรับข้อมูลที่มีการเข้ารหัสด้วย XML จะใช้คำขอ SOAP หรือ HTTP พื้นฐาน โปรโตคอล SAML กำหนดไว้ว่า บริการที่ร้องขอข้อมูลประจำตัวคือผู้ให้บริการ (SP)

ก่อนที่เราจะแนะนำกระบวนการรับรองความถูกต้องของ SAML แบบทั่วไป เราต้องเข้าใจองค์ประกอบที่การรับรองความถูกต้องของ SAML ขึ้นอยู่กับ ก่อนที่ IdP และ SP จะรู้จักกันและทำกระบวนการรับรองความถูกต้องให้เสร็จสมบูรณ์ พวกเขาต้อง "แลกเปลี่ยน" ข้อมูลที่จำเป็น ซึ่งมักจะทำได้โดยใช้ข้อมูลเมทาดาตาที่จัดรูปแบบเป็น XML ข้อมูลที่แลกเปลี่ยนกันประกอบด้วย:

  • คีย์สาธารณะ IdP และ SP จะสร้างคู่คีย์ส่วนตัวและสาธารณะของตัวเองและแลกเปลี่ยนเพื่อลงนามหรือเข้ารหัสการสื่อสาร ด้วยความก้าวหน้าของความปลอดภัยในการสื่อสารผ่านเครือข่าย ในกรณีส่วนใหญ่ปัจจุบันเพียงแค่ต้องลงนามในคำขอเท่านั้น ซึ่งไม่ต้องการขั้นตอนการเข้ารหัส
  • ปลายทางที่ใช้ให้ SP ส่งคำขอการรับรองความถูกต้อง SAML ไปยัง IdP และให้ SP รับคำยืนยัน SAML เพื่อตอบสนองต่อคำขอการรับรองความถูกต้องจาก IdP
  • รูปแบบแอตทริบิวต์ XML ที่ได้รับการสนับสนุน ใช้ให้ IdP ส่งข้อมูลผู้ใช้ที่จำเป็นไปยัง SP หลังจากเสร็จสิ้นการรับรองความถูกต้อง

เมื่อ IdP และ SP ได้รับทราบข้อมูลข้างต้นแล้ว พวกเขาสามารถดำเนินกระบวนการอนุญาต (กระบวนการรับรองความถูกต้องที่เริ่มต้นโดย SP ทั่วไป):

OIDC

OIDC เป็นโปรโตคอลทันสมัยที่พัฒนามาจากกรอบ OAuth 2.0 ใช้ JSON-based Web Tokens (JWT) ในการสร้างข้อมูลโหลด JWTs เป็นมาตรฐานอุตสาหกรรมที่มีอยู่แล้ว กำหนดแนวทางสำหรับการแลกเปลี่ยนและการแทนตัวอ้างถึงอย่างปลอดภัยระหว่างหน่วยงานต่าง ๆ ตัวอ้างซึ่งเป็นข้อมูลผู้ใช้ที่ถูกเข้ารหัสเป็นสิ่งสำคัญสำหรับการตรวจสอบและจัดการตัวตน OIDC ใช้ HTTPS ซึ่งเป็นที่ยอมรับกันทั่วไปในการส่งข้อมูล

เป็นที่ยอมรับกันว่าโปรโตคอล OIDC รองรับกระบวนการต่าง ๆ ได้หลายแบบ รวมถึงการไหลรหัสการอนุญาต การไหลโดยปริยาย และการไหลแบบไฮบริด ในตัวอย่างต่อไปนี้ เราจะอธิบายการไหลรหัสการอนุญาต ซึ่งเป็นการไหลที่ปลอดภัยที่สุดและเป็นแบบทั่วไป นี่คือการไหลที่ใช้โดย Logto

แง่มุมที่โดดเด่นของ OIDC และ SAML

  • ด้วยการพัฒนาที่ใหม่กว่า ทำให้ OIDC เหมาะสมกว่าสำหรับการรับรองความถูกต้องของแอปพลิเคชันร่วมสมัยเมื่อเทียบกับมาตรฐาน SAML ที่เก่ากว่า
  • ในประวัติศาสตร์ SAML มีมาก่อน OIDC และถูกรวมเข้ากับระบบองค์กรที่จัดตั้งไว้อย่างมากมาย
  • เมื่อเปรียบเทียบกับ XML ขนาดใหญ่ของ SAML JWTs ของ OIDC มีขนาดเล็กกว่าและใช้งานได้ง่ายกว่าในการประมวลผล
  • การกำหนดค่า OIDC โดยทั่วไปแล้วจะง่ายกว่า SAML
  • คุณสมบัติหลักของ OIDC คือการกำหนด "ขอบเขต" ที่อนุญาตให้ IdP จัดการสิทธิ์ที่หลากหลาย แอปพลิเคชันสามารถขอสิทธิ์เฉพาะจาก IdP ซึ่งจะได้รับอนุญาตเมื่อผู้ใช้อนุมัติ คุณลักษณะนี้ของ OIDC มอบการควบคุมสิทธิ์อย่างละเอียดให้แก่ IdP

ควรเลือกใช้งาน OIDC หรือ SAML อย่างไร?

ทั้ง OIDC และ SAML เป็นระบบการรับรองความถูกต้องที่มีความแข็งแกร่ง ทั้งสองมีจุดแข็งที่เป็นเอกลักษณ์ การเลือกขึ้นอยู่กับความต้องการเฉพาะขององค์กรของคุณ

  • สำหรับการใช้งานระบบการระบุตัวตนที่รวดเร็วและมีประสิทธิภาพ OIDC นั้นดีกว่า SAML การใช้งาน OIDC นั้นง่ายกว่า หลีกเลี่ยงการจัดการ XML ที่ซับซ้อนที่ SAML ต้องในการแปลข้อมูลเมทาดาตา การประมวลผลคำขอการรับรองความถูกต้อง และการวิเคราะห์คำยืนยัน SAML
  • OIDC เหมาะสมที่สุดสำหรับสภาพแวดล้อมที่มีการโต้ตอบกับ API จำนวนมากและกลไกการอนุญาตที่ซับซ้อน ให้การควบคุมสิทธิ์ที่ยืดหยุ่นและมีประสิทธิภาพมากขึ้นและประสบการณ์นักพัฒนาที่ยอดเยี่ยม
  • เมื่อใช้งานร่วมกับระบบที่ถูกจัดตั้งไว้ซึ่งใช้ SAML การเลือก SAML จะทำให้การทำงานร่วมกันของระบบเป็นไปอย่างราบรื่นและลดความพยายามที่ต้องใช้ในการสะพานโปรโตคอลต่างๆ

มีโซลูชันดีๆ ในตลาดหรือไม่?

Logto เป็นโซลูชั่นการระบุตัวตนที่ได้รับความนิยมเป็นอย่างมากในกลุ่มนักพัฒนา ได้เพิ่งแนะนำความสามารถ SSO สำหรับองค์กร สนับสนุนโปรโตคอล SAML และ OIDC พร้อมกับการรวมระบบที่มีในตัวสู่ IdP กระแสหลักอย่าง Google Workspace และ Microsoft Entra ID (เดิมคือ Azure AD) ด้วย Logto คุณสามารถข้ามความซับซ้อนในการนำไปใช้งาน SSO เอง การตั้งค่าที่เรียบง่ายไม่กี่ขั้นตอนสามารถเปิดใช้งาน SSO ในระบบการระบุตัวตนของคุณ และช่วยให้เลือกระเบียบที่เหมาะสมกับความต้องการทางธุรกิจของคุณได้