การติดตั้ง ADLdap เพื่อใช้ยืนยันตัวตนกับ Owncloud 8.0 นี้จะไม่อธิบายการติดตั้ง owncloud ครับ ซึ่งสามารถเข้าไปดูการติดตั้งได้ที่นี้
How to: install Owncloud (Easy method) – เกรียงไกร หนูทองคำ
หรือ
ติดตั้ง ownCloud เลือกใช้ user PSU Passport หรือ ftp server หรือ RADIUS Server – วิบูลย์ วราสิทธิชัย
การแบ่งปันความรู้ครั้งนี้จะแนะนำวิธีการนำเอา ADLdap (PHP Library) มาใช้งานร่วมกับ Owncloud เท่านั้นครับ ว่ามีวิธีการและขั้นตอนอย่างไร ซึ่งไม่ยากเกินไปครับ ^^
ภาพรวมเมื่อทำการติดตั้ง/ตั้งค่า ADLdap สำเร็จ
1. ลดขั้นตอนการยืนยันตัวตน ซึ่งขั้นตอนนั้นจากเริ่มจาก เซิร์ฟเวอร์ที่ติดตั้ง Owncloud ไปยัง เซิร์ฟเวอร์ Ldap โดยตรง ทำให้ไม่จำเป็นต้องติดตั้งระบบ Authen ในเซิร์ฟเวอร์ Owncloud นี้
2. สามารถจำกัดบุคลากรที่จะเข้ามาใช้งานได้ ตามคณะ/หน่วยนั้นๆ
ซอร์ฟแวร์ที่นำมาใช้งาน
– ubuntu server 14.04.02 (x64)
– Owncloud 8.0.2
– PHP 5.5
– ADLdap 4.0.4 – ดาวน์โหลดได้ที่นี้
คำแนะนำ หากมีการอัพเดทจาก เวอร์ชั่น 8.0.2 ไปเป็น 8.0.3 หรือเวอร์ชั่นที่สูงกว่า เรียบร้อยแล้ว
จะต้องทำตามขั้นตอนที่ 4 อีกครั้งครับ
ขั้นตอนการติดตั้ง
1. เข้าสู่ระบบด้วย username ของ admin จากนั้นให้ไปเปิดใช้งาน App โดยคลิ๊กที่เมนู Apps จากนั้นเลือก +Apps ให้คลิ๊กเมนู not enable ดูที่ชื่อ App External user support ให้คลิ๊ก Enable
** ขั้นตอนที่ 2-5 จะต้องทำการ ssh ไปยังเซิร์ฟเวอร์ที่ติดตั้ง owncloud ครับ
** path ที่ใช้ติดตั้ง owncloud ของบทความนี้ /var/www/owncloud/ ครับ
2. ให้แตกไฟล์ adLDAP_4.0.4r2.zip จากนั้นให้ Rename ชื่อแฟ้มเป็น adldap (จะ Rename หรือไม่ก็ได้ แต่ต้องอ้างเส้นทางและชื่อแฟ้มให้ถูกต้อง) แล้วไปวางไว้ตำแหน่งนี้ /var/www/owncloud/3rdparty/
3. เพิ่ม code โดยเข้าไปที่ไฟล์ /var/www/owncloud/config/config.php
/// AD LDAP ///
‘user_backends’ => array(
0 => array(
‘class’ => ‘OC_User_ADLDAP’,
‘arguments’ => array(
0 => ‘dc7.psu.ac.th’,
),
),
),
/// END ///
เมื่อเพิ่มแล้วจะได้ตามนี้
<?php
$CONFIG = array (
‘instanceid’ => ”,
‘passwordsalt’ => ”,
‘secret’ => ”,
‘trusted_domains’ =>
array (
0 => ‘xxx.xxx.psu.ac.th’,
),
‘datadirectory’ => ‘/var/www/owncloud/data’,
‘overwrite.cli.url’ => ‘https://xxx.xxx.psu.ac.th/owncloud’,
‘dbtype’ => ‘mysql’,
‘version’ => ‘8.0.2.0’,
‘dbname’ => ‘owncloud_db’,
‘dbhost’ => ‘localhost’,
‘dbtableprefix’ => ‘oc_’,
‘dbuser’ => ‘xxxxx’,
‘dbpassword’ => ‘xxxxx’,
‘installed’ => true,
‘ldapIgnoreNamingRules’ => false,
‘theme’ => ”,
‘maintenance’ => false,
‘mail_smtpmode’ => ‘smtp’,/// AD LDAP ///
‘user_backends’ => array(
0 => array(
‘class’ => ‘OC_User_ADLDAP’,
‘arguments’ => array(
0 => ‘dc7.psu.ac.th’,
),
),
),
/// END ///
);
4.เพิ่ม code โดยเข้าไปที่ไฟล์ /var/www/owncloud/apps/user_external/appinfo/app.php ไว้บรรทัดล่างสุด
OC::$CLASSPATH[‘OC_User_ADLDAP’]=’user_external/lib/adldap.php’;
เมื่อเพิ่มแล้วจะได้ตามนี้
<?php
OC::$CLASSPATH[‘OC_User_IMAP’]=’user_external/lib/imap.php’;
OC::$CLASSPATH[‘OC_User_SMB’]=’user_external/lib/smb.php’;
OC::$CLASSPATH[‘OC_User_FTP’]=’user_external/lib/ftp.php’;
OC::$CLASSPATH[‘OC_User_ADLDAP’]=’user_external/lib/adldap.php’;
5. สร้างไฟล์ชื่อ adldap.php นำไปไว้ที่ /var/www/owncloud/apps/user_external/lib/
จากนั้นให้ทำการเพิ่ม code เข้าไปดังนี้
หมายเหตุ สำหรับท่านใดที่นำไปใช้งาน ก่อนวันที่ 10-04-58 ขอให้ copy php code ทั้งหมดไปแทนของเดิมด้วยนะครับ
<?php
/*
| ——————————————————————————
| Owncloud 8 Authentication With ADLDAP
| ——————————————————————————
|
| Create Date : 08-04-2015
| Update : 18-10-2016
| Developer : Aussadayut Ubonkan
| e-mail : aussadayut.u@psu.ac.th
| Khunying Long Athakravisunthorn Learning Resources Center, Prince of Songkla University
|
*/
require_once(‘3rdparty/adldap/src/adLDAP.php’);class OC_User_ADLDAP extends \OCA\user_external\Base{
private $ad_ldap;
public $authUser = NULL;
public $user_authen = NULL;
public $port = NULL;
public $basedn = NULL;
public $ssl = NULL;
public $account_suffix = NULL;
public $attribute_mapping = NULL;
public $addgroup = NULL;
public $departid = NULL;
public $set_quota = NULL;
public function checkPassword($uid,$password){$this->set_quota = ‘5 GB’; // Ex. ’12 GB’ , ‘100 MB’
$this->addgroup = ‘Staffs’; // Group Name
$this->departid = ‘294’; // Department id , 294 = clib psu$this->port = ‘636’; // ldap = 389 , ldaps = 636
$this->basedn = ‘dc=psu,dc=ac,dc=th’;
$this->ssl = true;
$this->account_suffix = ‘@psu.ac.th’;
$this->attribute_mapping = array(
“cn”, “dn”, “samaccountname”, “employeeid”, “citizenid”, “company”,
“campusid”, “department”, “departmentid”, “physicaldeliveryofficename”, “positionid”,
“description”, “displayname”, “title”, “personaltitle”, “personaltitleid”, “givenname”,
“sn”, “sex”, “userprincipalname”,”mail”);$this->ad_ldap = new adLDAP(
array(
‘domain_controllers’ => array(‘dc7.psu.ac.th’,’dc5.psu.ac.th’),
‘ad_port’ => $this->port,
‘base_dn’ => $this->basedn,
‘use_ssl’ => $this->ssl,
‘account_suffix’ => $this->account_suffix,
)
);
$this->authUser = $this->ad_ldap->user()->authenticate($uid , $password);
$this->user_authen = $this->ad_ldap->user()->info($uid,$this->attribute_mapping);$check_departid = $this->user_authen[0][“departmentid”][0]; // department id
$uid = $this->user_authen[0][“samaccountname”][0]; // username
$uemail = $this->user_authen[0][“userprincipalname”][0]; // e-mail
/*
| Print User information
*/
//echo “<pre>”;
//print_r($this->user_authen);
//exit;
if($check_departid == $this->departid){if(!$this->user_Exists($uid)){
$this->storeUser($uid);
OC_Group::addToGroup($uid, $this->addgroup); // Add User to Group
OC_DB::executeAudited(
‘INSERT INTO `*PREFIX*preferences` ( `userid`, `appid` , `configkey` ,`configvalue`)’
. ‘ VALUES( ?, ? , ? ,?)’,
array($uid, ‘files’, ‘quota’ , $this->set_quota)
);
OC_DB::executeAudited(
‘INSERT INTO `*PREFIX*preferences` ( `userid`, `appid` , `configkey` ,`configvalue`)’
. ‘ VALUES( ?, ? , ? ,?)’,
//array($uid, ‘files’, ‘quota’ , $this->set_quota),
array($uid, ‘settings’, ’email’ , $uemail)
); // Set E-Mail
return $uid;}else{
$this->storeUser($uid);
return $uid;
}
}else{return false;
}
} // End checkPassword
public function user_Exists($uid) {
$result = OC_DB::executeAudited(
‘SELECT COUNT(*) FROM `*PREFIX*users_external`’
. ‘ WHERE LOWER(`uid`) = LOWER(?)’,
array($uid)
);
return $result->fetchOne() > 0;
} // user_Exists
} // End extends \OCA\user_external\Base
ในที่นี้ขออธิบายเพิ่มเติมสำหรับ adldap.php แค่ 4 ส่วน คือ
สวนที่ 1. require_once(‘3rdparty/adldap/src/adLDAP.php’); เส้นทางที่ใช้อ้างอิงไฟล์ ADLdap (PHP Libray) เพื่อนำมาใช้ร่วมกับ owncloud
สวนที่ 2. $this->set_quota = ‘5 GB’; กำหนดเนื้อที่เริ่มต้นของของผู้ใช้งาน
ส่วนที่ 3. $this->addgroup = ‘Staffs’; ใส่ชื่อกลุ่มที่ต้องการ เพื่อใช้สำหรับเพิ่มกลุ่มให้กับผู้ใช้งานโดยอัตโนมัติ
เงื่อนไข จะต้องการสร้างชื่อกลุ่มไว้ก่อนจึงจะใช้งานได้ โดยเข้าไปที่เมนู Admin จากนั้นกดเมนูด้านซ้าย Add Group แล้วใส่ชื่อกลุ่มที่ต้องการ จากนั้นกด ปุ่ม +
ส่วนที่ 4. $this->departid = ‘294’; กำหนดหมายเลขของหน่วยงาน เพื่อใช้กรองว่าต้องการให้หน่วนงานใด สามารถเข้าสู่ระบบมาใช้งานได้ ในที่นี้ 294 คือ หมายเลขของห้องสมุดครับ
ผลลัพธ์ที่เกิดขึ้น
เมื่อติดตั้งตามขั้นตอนดังกล่าวครบแล้วนั้น เมื่อมีการเข้าระบบ owncloud ด้วย psu passport หากเป็นบุคลากร ของคณะ/หน่วยงาน ตามหมายเลขกำหนด ก็จะสามารถเข้ามาใช้งานได้และ username นั้น ก็จะถูกเพิ่มเข้าไปในกลุ่มที่กำหนดโดยอัตโนมัติ ครับ
ขอขอบคุณทุกท่าน ที่อ่านมาถึงตรงนี้ครับ
^_^
Leave a Reply