การติดตั้ง Shibboleth Single Sign-On
ตอนที่ 10 - จัดเตรียมแอททริบิวท์

15. จัดเตรียมแอททริบิวท์

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

15.1 ตรวจสอบว่ามีแอททริบิวท์อะไรบ้างด้วยไฟล์ shibenv.php

ก่อนอื่นเราจำเป็นต้องตรวจสอบก่อนว่ามีแอททริบิวท์อะไรบ้างที่รับมาจาก IdP โดยก็อปปีไฟล์ shibenv.php จากโฟลเดอร์ c:\sso\setup\samples\app1 มาวางไว้ที่โฟลเดอร์ c:\sso\Apache2.2\htdocs\secure แล้วทดลองเบราซ์ไปที่ไฟล์ shibenv.php ผ่านทางหน้าต่างเบราเซอร์ โดยไปที่ http://127.0.0.1/secure/shibenv.php ซึ่งควรจะได้ผลลัพธ์ดังนี้

รูปภาพ 83 พบว่าไม่มี REMOTE_USER หรือแอททริบิวท์เพิ่มเติมใดๆส่งมาจาก IdP
เมื่อรันไฟล์ shibenv.php เราจะพบว่าแอททริบิวท์ยังไม่ถูกส่งมาจาก IdP เช่น REMOTE_USER ยังไม่มีค่า ซึ่งหากเป็นเช่นนี้จะทำให้แอพพลิเคชันของเราไม่สามารถตรวจสอบได้ว่าใครเป็นผู้เข้ามาใช้งานระบบเราอยู่ในปัจจุบัน

15.2 แก้ไขไฟล์ attribute-map.xml ที่ SP

เปิดไฟล์ attribute-map.xml จากโฟลเดอร์ c:\sso\shibboleth-sp\etc\shibboleth ขึ้นมาแก้ไขดังนี้

รูปภาพ 84 ให้เปิดคอมเมนต์ (Comment) ของ XML ที่เขียนไว้ว่า Examples of LDAP-based ...
เปิดคอมเมนต์ด้านล่างบริเวณ LDAP-based attributes ออกให้หมด แล้วบันทึกไฟล์ attribute-map.xml ไว้

15.3 แก้ไขไฟล์ attribute-resolver.xml ที่ IdP

เปิดไฟล์ attribute-resolver.xml จากโฟลเดอร์ c:\sso\shibboleth-idp\conf ขึ้นมาแก้ไขดังนี้

รูปภาพ 85 เปิดคอมเมนต์ของบริเวณ Core schema attributes
เปิดคอมเมนต์ XML ของบริเวณที่เขียนว่า Core schema attributes ออกให้หมด

รูปภาพ 86 เปิดคอมเมนต์ของบริเวณ inetOrgPerson attributes
เปิดคอมเมนต์ที่บริเวณ inetOrgPerson attributes ออกมาให้หมดด้วย

รูปภาพ 87 เปิดคอมเมนต์ของ resolver ที่มี id=”myLDAP”
ให้เปิดคอมเมนต์ที่ <resolver:DataConnector id=”myLDAP” ... > และแก้ไขให้ค่าคอนฟิกตรงกับระบบ LDAP ของเราคือ ldapURL=”ldap://127.0.0.1:10389” baseDN=”ou=users,ou=system” principal=”uid=admin,ou=system” principalCredential=”secret”
บันทึกไฟล์ attribute-resolver.xml ไว้ แล้วดำเนินการที่ขั้นต่อไป

15.4 แก้ไขไฟล์ attribute-filter.xml ที่ IdP

เปิดไฟล์ attribute-filter.xml จากโฟลเดอร์ c:\sso\shibboleth-idp\conf ขึ้นมาแก้ไขดังนี้

รูปภาพ 88 เพื่ม AttributeRule เข้าไปอีก 3 ค่าคือ uid, surname และ commonName
บันทึกไฟล์ attribute-filter.xml ไว้แล้วดำเนินการที่ขั้นต่อไป

15.5 ทดสอบการส่งค่าแอททริบิวท์จาก IdP มาที่ SP

ให้รีสตาทร์ Shibboleth 2.0 Daemon, Apache Web Server และ Tomcat ใหม่อีกครั้ง และเบราซ์ไปที่ http://127.0.0.1/secure เมื่อล็อกอินเข้าระบบแล้ว ให้เบราซ์ต่อไปที่ http://127.0.0.1/secure/shibenv.php จะได้ผลลัพธ์ดังนี้

รูปภาพ 89 พบว่า cn และ sn ถูกส่งมาจาก IdP มาที่ SP แล้ว
ซึ่งโปรแกรมเมอร์ที่เขียนโปรแกรม PHP สามารถตรวจสอบผู้ใช้ว่าเป็นใครได้โดยเขียนโปรแกรม
$user = $_SERVER[‘cn’]

15.6 ทดสอบเปิดมากกว่า 1 เซสชัน

ให้ทดสอบโดยเปิดโปรแกรม iexplore มากกว่า 1 เซสชันโดยรันคำสั่ง iexplore –new “http://127.0.0.1/secure” แล้วล็อกอินเข้าเป็น user1 และ user2 ตามลำดับ เมื่อลองตรวจสอบค่าใน $_SERVER จะพบว่า cn และ sn จะถูกแยกกันไปตามแต่ละเซสชันของผู้ใช้อย่างถูกต้อง

รูปภาพ 90 เปิด 2 เซสชันพบว่า user1 กับ user2 แยกกันอยู่คนละเซสชันอย่างถูกต้อง

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การติดตั้ง Shibboleth Single Sign-On
ตอนที่ 12 - การทำ SLO (Single Log-out)

ตัวอย่างการเข้ารหัส AES ด้วย Java และถอดรหัสด้วย C#.NET

การรักษาความปลอดภัยแบบ OWASP