กำหนดค่าแอตทริบิวต์ SAML assertion
แอตทริบิวต์ SAML เป็นองค์ประกอบสำคัญของ SAML assertion ที่บรรจุข้อมูลเฉพาะเกี่ยวกับผู้ใช้ที่ได้รับการยืนยันตัวตน แอตทริบิวต์เหล่านี้อาจรวมถึงตัวระบุผู้ใช้ (user identifiers), บทบาท (Roles), สิทธิ์ (Permissions) และข้อมูลผู้ใช้อื่น ๆ ที่ Service Provider (SP) อาจต้องใช้เพื่อการอนุญาต (Authorization) และการปรับแต่งประสบการณ์ผู้ใช้
ทำความเข้าใจแอตทริบิวต์ SAML
ในกระบวนการยืนยันตัวตน SAML:
- แอตทริบิวต์คือคู่ชื่อ-ค่า (name-value pairs) ที่มีข้อมูลผู้ใช้
- แอตทริบิวต์จะถูกรวมอยู่ใน SAML assertion ที่ส่งจาก Identity Provider (Logto) ไปยัง Service Provider
- แอตทริบิวต์ช่วยให้ Service Provider ตัดสินใจเกี่ยวกับการเข้าถึงและการปรับแต่งประสบการณ์ผู้ใช้ได้อย่างเหมาะสม
การแมปแอตทริบิวต์ใน Logto
การแมปแอตทริบิวต์ช่วยให้คุณกำหนดได้ว่าข้อมูลผู้ใช้จาก Logto ควรถูกแมปไปยังแอตทริบิวต์ใดใน SAML assertion การแมปนี้ช่วยให้ Service Provider ของคุณได้รับข้อมูลผู้ใช้ในรูปแบบและชื่อแอตทริบิวต์ที่คาดหวัง
เมื่อคุณกำหนดการแมปแอตทริบิวต์:
- คุณระบุว่าคุณสมบัติผู้ใช้ใดจาก Logto ที่ควรรวมอยู่ใน SAML assertion
- คุณกำหนดชื่อแอตทริบิวต์แบบกำหนดเองที่ Service Provider ของคุณต้องการ
- แอตทริบิวต์ที่ถูกแมปจะถูกรวมใน SAML assertion โดยอัตโนมัติระหว่างการยืนยันตัวตน
แอตทริบิวต์ที่ใช้บ่อย
แอตทริบิวต์ SAML ที่ใช้บ่อย ได้แก่:
- Sub (User ID)
- Organizations (องค์กร)
- Name
- Preferred username
ดูข้อมูลผู้ใช้ทั้งหมดที่มีใน Logto
การกำหนดการแมปแอตทริบิวต์อย่างถูกต้องจะช่วยให้ Service Provider ของคุณได้รับข้อมูลผู้ใช้ที่จำเป็นทั้งหมดเพื่อให้การเข้าถึงและการปรับแต่งประสบการณ์ผู้ใช้เหมาะสม
คุณสามารถแมปข้อมูลผู้ใช้ทั้งหมดที่มีใน Logto ไปยังแอตทริบิวต์ที่ SP ของคุณต้องการได้โดยใช้การตั้งค่าการแมปแอตทริบิวต์
แอตทริบิวต์คงที่ (Static attributes)
Service Provider บางรายคาดหวังแอตทริบิวต์ที่มีค่าเดียวกันสำหรับผู้ใช้ทุกคน เช่น ID ที่ระบุบัญชีหรือไซต์ของคุณในฝั่ง Service Provider แอตทริบิวต์คงที่คือคู่ชื่อ-ค่าคงที่ที่ Logto จะเพิ่มใน SAML assertion ของแอปพลิเคชันทุกครั้ง ร่วมกับแอตทริบิวต์ผู้ใช้ที่ถูกแมป
ตัวอย่างเช่น การเชื่อมต่อ NetSuite SuiteCommerce อาจต้องการแอตทริบิวต์ account และ site:
| ชื่อแอตทริบิวต์ | ค่า |
|---|---|
account | NetSuite account ID ของคุณ |
site | Website ID ของคุณ |
กำหนดค่าแอตทริบิวต์คงที่ใน Console
- ไปที่ Console > Applications และเปิดแอป SAML ของคุณ
- เปิดแท็บ Attribute mappings และค้นหาการ์ด Static attributes ใต้ Base attribute mappings
- กรอกชื่อแอตทริบิวต์ใน Key และค่าของมันใน Value คลิก Add another เพื่อเพิ่มแอตทริบิวต์เพิ่มเติม หากต้องการลบแอตทริบิวต์ล่าสุด ให้ลบ key และ value ของแถวนั้นออก
- คลิก Save changes
กำหนดค่าแอตทริบิวต์คงที่ด้วย Management API
ตั้งค่า staticAttributes เมื่อคุณ สร้าง หรือ อัปเดต แอป SAML ด้วย Management API:
curl \
--request PATCH \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data '{"staticAttributes": {"account": "<your-account-id>", "site": "<your-site-id>"}}' \
'https://[tenant-id].logto.app/api/saml-applications/<application-id>'
การอัปเดตที่มี staticAttributes จะเป็นการแทนที่อ็อบเจกต์ทั้งหมด ดังนั้นให้รวมทุกแอตทริบิวต์คงที่ที่คุณต้องการเก็บไว้ หากไม่ต้องการเปลี่ยนแปลง ให้ละเว้นฟิลด์นี้ หรือส่ง {} เพื่อลบทั้งหมด
กฎสำหรับแอตทริบิวต์คงที่
- ชื่อแอตทริบิวต์สามารถมีตัวอักษร ASCII, ตัวเลข และอักขระ
_ - . : / # @ดังนั้นชื่อ URI และ OID เช่นhttp://schemas.example.com/claims/siteหรือurn:oid:1.3.6.1.4.1.5923.1.1.1.6จึงได้รับการยอมรับ - แต่ละแอตทริบิวต์คงที่ต้องมีค่าเป็นสตริงที่ไม่ว่างเปล่าเพียงค่าเดียว
- ชื่อต้องไม่ซ้ำกันระหว่างกันเองหรือกับชื่อแอตทริบิวต์ผู้ใช้ใน assertion: คือชื่อในคอลัมน์ Value name of your application ของการแมปแอตทริบิวต์ หรือ
sub,emailและnameเมื่อไม่มีการแมป Logto จะเปรียบเทียบชื่อหลังจากแปลงเป็น camel case โดยใช้.,_และ-เป็นตัวแบ่งคำ เช่นsite_id,site.idและSiteIdจะถือว่าซ้ำกัน เช่นเดียวกับaccountและAccountการตรวจสอบนี้จะทำงานเมื่อคุณเปลี่ยนการแมปแอตทริบิวต์ หากบันทึกแล้วพบว่าซ้ำกัน ให้เปลี่ยนชื่อแอตทริบิวต์ใดแอตทริบิวต์หนึ่ง
แอตทริบิวต์ทั้งหมดใน assertion ทั้งที่ถูกแมปและคงที่ จะใช้ NameFormat urn:oasis:names:tc:SAML:2.0:attrname-format:basic และถูกส่งเป็นค่า xs:string หาก Service Provider ของคุณคาดหวังชื่อ URI หรือ OID พร้อม NameFormat urn:oasis:names:tc:SAML:2.0:attrname-format:uri โปรดตรวจสอบว่ารองรับ basic ด้วย