Category: การทำงานกับ PSU Passport

  • การเชื่อมต่อ PSU Passport : PHP-LDAP

    วิธีการเชื่อมต่อ PSU Passport ด้วย PHP ผ่าน LDAPS

    ทดสอบบน : Windows 2008 R2 / IIS 7.5

    Code ดังนี้

    Include Function ldappsu (ldappsu.php)

     <?php
    //Function LDAPPSU Version 1.0.0
    //Author : Jatuporn Chuchuay ISD CC PSU (Tel.2082)
    //Update : 22/12/2014
    // The LDAP server
    
    // Authenticate the against server the domain\username and password combination.
    function authenticate($server,$basedn,$domain,$username,$password)
    {
     $auth_status = false;
     $i=0;
     while(($i<count($server))&&($auth_status==false)){
     $ldap = ldap_connect("ldaps://".$server[$i]) or 
     $auth_status = false;
     ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
     ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
     $ldapbind = ldap_bind($ldap, $username."@".$domain,$password);
     if($ldapbind){
     if(empty($password)){
     $auth_status = false;
     }else{
     $result[0] = true;
     //Get User Info
     $result[1] = get_user_info($ldap,$basedn,$username);
     }
     }else{
     $result[0] = false;
     }
     ldap_close($ldap);
     $i++;
     }
     return $result;
    }
    
    function get_user_info($ldap,$basedn,$username)
    {
     $user['cn'] = "";
     $user['dn'] = "";
     $user['accountname'] = "";
     $user['personid'] = "";
     $user['citizenid'] = "";
     $user['campus'] = "";
     $user['campusid'] = "";
     $user['department'] = "";
     $user['departmentid'] = "";
     $user['workdetail'] = "";
     $user['positionid'] = "";
     $user['description'] = "";
     $user['displayname'] = "";
     $user['detail'] = "";
     $user['title'] = "";
     $user['titleid'] = "";
     $user['firstname'] = "";
     $user['lastname'] = "";
     $user['sex'] = "";
     $user['mail'] = "";
     $user['othermail'] = "";
     $sr=ldap_search($ldap, $basedn, 
     "(&(objectClass=user)(objectCategory=person)(sAMAccountName=".$username."))", 
     array("cn", "dn", "samaccountname", "employeeid", "citizenid", "company",
     "campusid", "department", "departmentid", "physicaldeliveryofficename", "positionid", 
     "description", "displayname", "title", "personaltitle", "personaltitleid", "givenname", 
     "sn", "sex", "userprincipalname","mail"));
     $info = ldap_get_entries($ldap, $sr);
    
     $user['cn'] = $info[0]["cn"][0];
     $user['dn'] = $info[0]["dn"];
     $user['accountname'] = $info[0]["samaccountname"][0];
     $user['personid'] = $info[0]["employeeid"][0];
     $user['citizenid'] = $info[0]["citizenid"][0];
     $user['campus'] = $info[0]["company"][0];
     $user['campusid'] = $info[0]["campusid"][0];
     $user['department'] = $info[0]["department"][0];
     $user['departmentid'] = $info[0]["departmentid"][0];
     $user['workdetail'] = $info[0]["physicaldeliveryofficename"][0];
     $user['positionid'] = $info[0]["positionid"][0];
     $user['description'] = $info[0]["description"][0];
     $user['displayname'] = $info[0]["displayname"][0];
     $user['detail'] = $info[0]["title"][0];
     $user['title'] = $info[0]["personaltitle"][0];
     $user['titleid'] = $info[0]["personaltitleid"][0];
     $user['firstname'] = $info[0]["givenname"][0];
     $user['lastname'] = $info[0]["sn"][0];
     $user['sex'] = $info[0]["sex"][0];
     $user['mail'] = $info[0]["userprincipalname"][0];
     $user['othermail'] = $info[0]["mail"][0];
     return $user;
    }
    ?>

    Code หน้า Login (login.php)

    <?php
    //PSU Passport PHP-LDAP Weblogin Version 1.0.0
    //Author : Jatuporn Chuchuay ISD CC PSU (Tel.2121)
    //Update : 04/01/2013
    ?>
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>PSU Passport : PHP-LDAP example</title>
    </head>
    <body>
    <?php
    if(isset($_POST['username'])){
     //Include PHPLDAP Class File
     require "./ldappsu.php";
     //DC1(VM),2(RACK),7(VM)-Hatyai,DC3(RACK)-Pattani,DC5(RACK)-Surat,DC6(RACK)-Trang
     $server = array("dc2.psu.ac.th","dc7.psu.ac.th","dc1.psu.ac.th");
     $basedn = "dc=psu,dc=ac,dc=th";
     $domain = "psu.ac.th";
     $username = $_POST['username'];
     $password = $_POST['password'];
     //Call function authentication
     $ldap = authenticate($server,$basedn,$domain,$username,$password);
     if($ldap[0]){
     echo "<br/>>> User Profile <<<br/>";
     echo "Account Name : ".$ldap[1]['accountname']."<br/>";
     echo "Employee ID/Student ID : ".$ldap[1]['personid']."<br/>";
     echo "Citizen ID : ".$ldap[1]['citizenid']."<br/>";
     echo "CN : ".$ldap[1]['cn']."<br/>";
     echo "DN : ".$ldap[1]['dn']."<br/>";
     echo "Campus : ".$ldap[1]['campus']."(".$ldap[1]['campusid'].")<br/>";
     echo "Department : ".$ldap[1]['department']."(".$ldap[1]['departmentid'].")<br/>";
     echo "Work Detail : ".$ldap[1]['workdetail']."<br/>";
     echo "Position ID : ".$ldap[1]['positionid']."<br/>";
     echo "Description : ".$ldap[1]['description']."<br/>";
     echo "Display Name : ".$ldap[1]['displayname']."<br/>";
     echo "Detail : ".$ldap[1]['detail']."<br/>";
     echo "Title Name : ".$ldap[1]['title']."(".$ldap[1]['titleid'].")<br/>";
     echo "First Name : ".$ldap[1]['firstname']."<br/>";
     echo "Last Name : ".$ldap[1]['lastname']."<br/>";
     echo "Sex : ".$ldap[1]['sex']."<br/>";
     echo "Mail : ".$ldap[1]['mail']."<br/>";
     echo "Other Mail : ".$ldap[1]['othermail']."<br/>";
     }
    }else{
    ?>
    This area is restricted.<br>
    Please login to continue.<br>
    
    <form method='post' action=''>
    Username: <input type='text' name='username' value=''><br>
    Password: <input type='password' name='password'><br>
    <br>
    <input type='submit' name='submit' value='Submit'><br>
    </form>
    <?php
    }
    ?>
    </body>
    </html>

    **** บทความเก่าเชื่อมต่อผ่าน ADLDAP ด้วย ubuntu 12.04/Apache2 ****

    1. หลังจากติดตั้ง Apache2 และ เปิด Module php5-ldap เรียบร้อยแล้ว

    2. ทำการโหลดโปรแกรม adLDAP จาก Website : http://adldap.sourceforge.net/download.php (สำหรับ PHP 4 ให้โหลด Version 2.1)
       # cd /var/www 
       # wget http://downloads.sourceforge.net/project/adldap/adLDAP/adLDAP_4.0.4/adLDAP_4.0.4r2.zip
       # unzip adLDAP_4.0.4r2.zip

    3. เปิดหน้าตัวอย่างการเข้าใช้งานได้ที่ https://localhost/adLDAP/examples/authenticate.php
    (สำหรับ Web ตัวอย่างต้องใช้เป็น https เท่านั้น)

    4. ทำการแก้ไขไฟล์ /var/www/adLDAP/src/adLDAP.php บรรทัดเหล่านี้

         … 
         protected $accountSuffix = “@psu.ac.th”;

         protected $baseDn = “DC=psu,DC=ac,DC=th”;
         …
         protected $domainControllers = array(“dc2.psu.ac.th”,”dc7.psu.ac.th”,”dc1.psu.ac.th”);
         …
         protected $useSSL = true;
         …

     (สำหรับรายการ DC ให้เลือก DC ใกล้ที่สุดก่อน DC3-ปัตตานี, DC4-ภูเก็ต,DC5-สุราษฎร์,DC6-ตรัง,DC1,2,7-หาดใหญ่)

    5. กลับมาเข้าที่ Web  https://localhost/adLDAP/examples/authenticate.php อีกครั้งน่าจะสามารถใช้งานได้แล้ว

    โดยสำหรับตัวนี้แนะนำว่าให้ใช้เฉพาะในส่วน authen เพราะในส่วนของการดึง Profile ยังค่อนข้างมีข้อจำกัด อยู่ ซึ่งถ้าอยากให้สามารถดึง Profile ได้ด้วย ผมแนะนำในส่วนของ Code ที่ผมเขียนขึ้นมาให้ โดยจะกล่าวในส่วนถัดไป

    วิธีเรียกใช้งานไฟล์ Class AdLDAP (ให้ copy file จาก folder src ไปด้วย)

            include “./adLDAP.php”

    วิธีเรียกใช้ Class AdLDAP

    try {
    $adldap = new adLDAP();
    }catch(adLDAPException $e){
            echo $e;
            exit();
    }     

    วิธี Authentication

    if($adldap->authenticate($username,$password)){
             session_start();
             $_SESSION[“username”] = $username;
             …

  • กิจกรรม CoP PSU sysadmin KM1 “การทำงานกับ PSU Passport”

    กิจกรรม CoP PSU sysadmin KM1 “การทำงานกับ PSU Passport” วันที่ 21 ธ.ค. 55 เวลา 09.30 – 14.00 น. มีอาหารเที่ยงเลี้ยงด้วย พบกันที่ห้อง 102 ศูนย์คอมพิวเตอร์ ม.อ. หาดใหญ่ครับ

    กำหนดการ
    เวลา 09.30 – 10.00 น. ลงทะเบียนและรับประทานอาหารว่าง
    เวลา 10.00 – 12.00 น. แลกเปลี่ยนเรียนรู้ หัวข้อ “การทำงานกับ PSU Passport”
    เวลา 12.00 – 13.00 น. รับประทานอาหารเที่ยงร่วมกัน
    เวลา 13.00 – 14.00 น. ตอบปัญหาและข้อซักถาม

    นำเสนอโดย คุณจตุพร ชูช่วย แอดมินทีมเซิร์ฟเวอร์ ศูนย์คอมพิวเตอร์ ม.อ. หาดใหญ่
    รอบนี่้ผมคิดว่า คุยกันไม่ต้องเร่งรีบมาก ในช่วงแรก แล้วเบรคพักเที่ยง ทานข้าวด้วยกัน แล้วถ้ายังมีคำถามไว้ในช่วงบ่ายอีก 1 ชั่วโมงครับ (ดูรายชื่อผู้ที่แจ้งเข้าร่วม)

    หัวข้อที่จะเล่าและตอบคำถาม
    1. โครงสร้างของระบบ PSU Passport
    2. การนำเข้าข้อมูลเพื่อสร้าง Account บน PSU Passport
    3. บริการของระบบ PSU Passport (ldap/ldaps,web service,ระบบเปลี่ยนรหัสผ่าน)
    4. สิทธิการเข้าถึงชั้นความลับของ PSU Passport (ระบบความปลอดภัยของข้อมูล)
    5. ข้อกำหนดใช้บริการ PSU Passport (พรบ. คอม 50)
    6. ระบบจัดการข้อมูลบน PSU Passport (AdsAdmin)
    7. การออก Account ในกลุ่มอื่น ๆ (Guest,VIP,LAB)
    8. ตัวอย่างการเข้าใช้งานบน Application ต่าง ๆ (LDAP,Web Service)
    9. ระบบลงทะเบียน Server Authen ในอนาคต
    10. แนวทางการเผยแพร่ความรู้ในอนาคต
    11. ตอบคำถามกวนใจใคร

    ช่วง ตอบคำถามกวนใจใคร เช่น

    ผู้ใช้: อยากให้ศูนย์คอมฯมี database view ของ PSU Passport เพื่อให้คณะคอนเนคเข้ามาได้
    แอดมินศูนย์:
    – ข้อมูลอะไรครับ หากเฉพาะ user/password ก็ใข้ passport ได้อยู่แล้ว ?
    – หากเป็นข้อมูลบุคลากรให้ติดต่อการเจ้าหน้าที่มหาวิทยาลัยเพื่อขอสิทธิ์เข้าถึงข้อมูลครับ
    – และหากเป็นข้อมูลนักศึกษาให้ติดต่อทะเบียนกลางเพื่อขอสิทธิ์เข้าถึงข้อมูล ครับ
    ผู้ใช้: ถ้าให้ 0com เป็นตัวกลาง ประสานงานให้ แบบ one stop service ได้มั้ยครับ
    แบบว่าไม่ต้องไปติดต่อหลายที่
    แอดมินศูนย์:
    ไม่ได้ครับ เพราะเราไม่ใช่เจ้าของข้อมูล เป็นแค่ที่เก็บ ต้องขอเจ้าของครับ

    ผู้ใช้: สามารถทำให้ antivirus แต่ละค่าย สามารถ
    update อัตโนมัติได้โดยไม่ต้อง authen psu passport ได้ไหม
    เพราะโดยปกติเครื่องคอมขึ้นมา โปรแกรม antivirus จะทำการ update
    ให้อัตโนมัติ เครื่องคอมผู้ใช้ ถ้าไม่ได้ authen psu passport
    ผ่านหน้าเว็บทันที จะขึ้น โปรแกรม antivirus จะเตือน update failed

    ผู้ใช้: ไม่แน่ใจว่า ตอนนี้ ศูนย์คอมเปิดเป็น web service ให้กับคณะเรียกใช้หรือเปล่า

    ขอบคุณทุกท่านที่มาร่วมกันแลกเปลี่ยนเรียนรู้ด้วยกัน
    วิบูลย์

    รายชื่อผู้ดำเนินกิจกรรมครั้งนี้

    1. วิบูลย์ วราสิทธิชัย ศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่
    2. จตุพร ชูช่วย  ศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่

    รายชื่อผู้ที่แจ้งเข้าร่วม

    1. ศิริพงษ์ ศิริวรรณ ศูนย์เทคโนโลยีสารสนเทศ คณะเภสัชศาสตร์
    2. คณกรณ์ หอศิริธรรม ศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่
    3. เกรียงไกร หนูทองคำ ศูนย์คอมพิวเตอร์  ม.อ.หาดใหญ่
    4. วชิรวิชญ์  จิวานิจ ศูนย์คอมพิวเตอร์  ม.อ.หาดใหญ่
    5. อาทิตย์ อรุณศิวกุล งานสารสนเทศ คณะศิลปศาสตร์
    6. ภูเมศ จารุพันธ์ สารสนเทศ คณะพยาบาลศาสตร์
    7. จอมขวัญ สุวรรณมณี สารสนเทศ คณะพยาบาลศาสตร์
    8. กฤตกร อินแพง สารสนเทศ คณะพยาบาลศาสตร์
    9. พรจรัส สุทธินันท์ คณะการจัดการสิ่งแวดล้อม
    10. ฉัตรชัย จันทร์พริ้ม วิศวกรรมคอมพิวเตอร์
    11. อำนาจ สุคนเขตร์ ฝ่ายเทคโนโลยีการศึกษา สำนักวิทยบริการ ม.อ.ปัตตานี
    12. สัมฤทธิ์ ฤทธิภักดี ศูนย์คอมพิวเตอร์  ม.อ.หาดใหญ่
    13. ณัฏฐิกา หัตถกรรม ศูนย์คอมพิวเตอร์  ม.อ.หาดใหญ่
    14. สุนทรี นภิบาล ศูนย์คอมพิวเตอร์  ม.อ.หาดใหญ่
    15. โกศล โภคาอนนต์ ศูนย์คอมพิวเตอร์  ม.อ.หาดใหญ่
    16. ภัทธ์ เอมวัฒน์ สำนักวิทยบริการ ม.อ.ปัตตานี
    17. ก้องชนก ทองพลัด กองบริการการศึกษา สำนักงานอธิการบดี วิทยาเขตหาดใหญ่
    18. นิติ โชติแก้ว คณะการแพทย์แผนไทย
    19. ชัยวัฒน์ ศรีจันทร์กุล คณะวิทยาการจัดการ
    20. บุญศิริ บุญยก สำนักงานเลขานุการ คณะวิทยาการจัดการ
    21. สุทิศา จรียานุวัฒน์ งานเทคโนโลยีสารสนเทศ  คณะทันตแพทยศาสตร์
    22. ธีรเดช เขมะธีรรัตน์ งานเทคโนโลยีสารสนเทศ  คณะทันตแพทยศาสตร์
    23. เพียงพิศ สุกแดง  คณะวิทยาการจัดการ
    24. ธีรวัฒน์ แตระกุล ฝ่ายวิจัยและบริการ คณะเภสัชศาสตร์
    25. วิมลรัตน์ แดงสุวรรณ บัณฑิตวิทยาลัย
    26. กิตติศักดิ์ แก้วเนียม จากสำนักฯ ม.อ.ปัตตานี
    27. จรัล บูลวิบูรณ์ คณะศิลปศาสตร์
    28. เสกสรร มาลานุสรณ์ คณะศิลปศาสตร์
    29. จรรยา เพชรหวน งานเทคโนโลยีและสารสนเทศ คณะทรัพยากรธรรมชาติ
    30. ยุวภา โฆสกิตติกุล คณะทรัพยากรธรรมชาติ
    31. สุวัฒน์ อนันตคุณูปกร ศูนย์สื่อการเรียนรู้
    32. ดุษณี โสภณอดิศัย  คณะนิติศาสตร์
    33. ธิดาวรรณ์ แซ่เล่า
    34. ปิยะวัชร์ จูงศิริ คณะวิศวกรรมศาสตร์
    35. สุรเชษฐ์ หนูแท้ คณะแพทยศาสตร์
    36. อาฮาหมัด เจ๊ะดือราแม งานเทคโนโลยีสารสนเทศ คณะเทคนิคการแพทย์
    37. สุระเชษฐ์ วงศ์อารยพาณิช คณะวิศวกรรมศาสตร์
    38. สนธยา เมืองโต หน่วยคอมพิวเตอร์ ม.อ.ปัตตานี
    39. สายัณ อินชะนะ หน่วยคอมพิวเตอร์ ม.อ.ปัตตานี
    40. หฤทัย สมบูรณ์รุ่งโรจน์ ศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่
    41. ทิพาพร พัฒนศิริ  ศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่
    42. พงษ์พันธ์ ประพันธ์ ม.อ.ตรัง
    43. อนันต์ ทองนวล ม.อ.ตรัง
    44. ธีรพันธุ์  บุญราช คณะเภสัชศาสตร์
    45. นพชาติ เลิศพูนสวัสดิ์  ศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่