IT Zone

SAML คืออะไร?

SAML (Security Assertion Markup Language)

เป็นมาตรฐาน XML ตัวนึงที่ให้ผู้ใช้เข้าสู่ระบบเพียงครั้งเดียวกับเว็บไซต์หลายๆเว็บไซต์ที่อยู่ในเครือเดียวกัน โดยไม่ต้องล็อกอินหลายๆรอบ หรือที่เราเรียกกันว่า Single Sign-on นั่นเอง SAML ถูกออกแบบให้สามารถนำมาใช้ในโมเดลธุรกิจสู่ธุรกิจ(B2B) และธุรกิจสู่ผู้บริโภค(B2C) ได้

SAML ประกอบไปด้วย 3 ส่วนประกอบหลักๆ ดังต่อไปนี้

1.Assertions - การยืนยันตัวตนและสิทธิ์

1.1.Authentication assertion ตรวจสอบความมีตัวตนของผู้ใช้ที่ล็อกอินเข้ามา

1.2.Attribute assertion จะประกอบไปด้วยข้อมูลของตัวผู้ใช้

1.3.Authorization assertion จะตรวจสอบสิทธิ์ในสิ่งที่ผู้ใช้ต้องการจะทำ(action)

2.Protocol จะกำหนดวิธิการที่ SAML จะร้องขอและรับการตรวจสอบในข้อ 1.

3.Binding กำหนดข้อความ SAML ที่แลกเปลี่ยนกันเป็นลักษณะการจับคู่กับ Simple Object Access Protocol (SOAP)

SAML ทำงานกับหลายๆโปรโตคอลได้ รวมทั้ง Hypertext Transfer Protocol (HTTP), Simple Mail Transfer Protocol (SMTP), File Transfer Protocol (FTP) และยังสนับสนุนกับ SOAP, BizTalk, และ Electronic Business XML (ebXML) อีกด้วยองค์กรที่ชื่อว่า The Organization for the Advancement of Structured Information Standards (OASIS) ถือได้ว่าเป็นกลุ่มมาตรฐานของ SAML เลยทีเดียว

พื้นฐานเรื่องตรรกศาสตร์

พื้นฐานเรื่องตรรกศาสตร์ มีดังต่อไปนี้

กำหนดให้
T = True(จริง)
F = False(เท็จ)
| = OR(หรือ)
& = AND(และ/กับ)

โดยมีตารางเงื่อนไขดังนี้

เงื่อนไขหรือ(OR)

Operand 1  Operator   Operand 2  Result 
 T  |  T  T
 T  |  F  T
 F  |  T  T
 F  |  F  F

* จุดสังเกตุ จะเห็นว่ามีเท็จเพียงกรณีเดียวคือ Operand ทั้งสองเป็น เท็จ(F)

หลักคิดช่วยจำ

ตัวอย่างหลักคิดเพื่อช่วยให้เราสามารถเข้าใจและจดจำเงื่อนไขหรือ(OR) ได้ก็คือ

สมมติสมมติว่ามี ปากกา ดินสอ และ ยางลบ วางอยู่บนโต๊ะที่อยู่ห่างไกลจากนาย A และมีนาย B อยู่ใกล้ๆบริเวณโต๊ะนั้น

นาย A ได้บอกนาย B ว่า "รบกวนคุณ B หยิบ ดินสอ หรือ(OR) ปากกา ให้หน่อยได้ไหมครับ" จากประโยคนี้ ใช้เงื่อนไข หรือ(OR)

สิ่งที่เกิดขึ้น

หากนาย  B หยิบ ดินสอ มาให้ ผลของเงื่อนไขนี้คือ จริง เหตุเพราะว่า
ดินสอ(เป็นจริง เพราะหยิบดินสอ) OR(|) ปากกา(เป็นเท็จ เพราะไม่ได้หยิบปากกา) ได้ผลเป็น True(จริง) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
T | F = T (ดูเทียบกับตาราง OR)

หากนาย  B หยิบ ปากกา มาให้ ผลของเงื่อนไขนี้คือ จริง เหตุเพราะว่า
ดินสอ(เป็นเท็จ เพราะไม่ได้หยิบดินสอ) OR(|) ปากกา(เป็นจริง เพราะหยิบปากกา) ได้ผลเป็น True(จริง) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
F | T = T (ดูเทียบกับตาราง OR)

หากนาย  B หยิบทั้ง ดินสอ และ ปากกา มาให้ ผลของเงื่อนไขนี้คือ จริง เหตุเพราะว่า
ดินสอ(เป็นจริง เพราะหยิบดินสอ) OR(|) ปากกา(เป็นจริง เพราะหยิบปากกา) ได้ผลเป็น True(จริง) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
T | T = T (ดูเทียบกับตาราง OR)

หากนาย B หยิบ ยางลบ มาให้ ผลของเงื่อนไขนี้เป็น เท็จ เหตุเพราะว่า
ดินสอ(เป็นเท็จ เพราะไม่ได้หยิบดินสอ) OR(|) ปากกา(เป็นเท็จ เพราะไม่ได้หยิบปากกา) ได้ผลเป็น False(เท็จ) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
F | F = F (ดูเทียบกับตาราง OR)

 

เงื่อนไขและ(AND)

Operand 1  Operator   Operand 2  Result 
 T  &  T  T
 T  &  F  F
 F  &  T  F
 F  &  F  F

จุดสังเกตุ จะเห็นว่ามีจริงเพียงกรณีเดียวคือ Operand ทั้งสองเป็น จริง(T)

หลักคิดช่วยจำ

ตัวอย่างหลักคิดเพื่อช่วยให้เราสามารถเข้าใจและจดจำเงื่อนไขและ(AND) ได้ก็คือ

สมมติสมมติว่ามี ปากกา ดินสอ และ ยางลบ วางอยู่บนโต๊ะที่อยู่ห่างไกลจากนาย A และมีนาย B อยู่ใกล้ๆบริเวณโต๊ะนั้น

นาย A ได้บอกนาย B ว่า "รบกวนคุณ B หยิบ ดินสอ กับ(AND) ยางลบ ให้หน่อยได้ไหมครับ" จากประโยคนี้ ใช้เงื่อนไข และ(AND)

สิ่งที่เกิดขึ้น

หากนาย  B หยิบ ดินสอ มาให้ ผลของเงื่อนไขนี้คือ เท็จ เหตุเพราะว่า
ดินสอ(เป็นจริง เพราะหยิบดินสอ) AND(&) ยางลบ(เป็นเท็จ เพราะไม่ได้หยิบยางลบ) ได้ผลเป็น False(เท็จ) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
T & F = F (ดูเทียบกับตาราง AND)

หากนาย  B หยิบ ปากกา มาให้ ผลของเงื่อนไขนี้คือ เท็จ เหตุเพราะว่า
ดินสอ(เป็นเท็จ เพราะไม่ได้หยิบดินสอ) AND(&) ยางลบ(เป็นเท็จ เพราะไม่ได้หยิบยางลบ) ได้ผลเป็น False(เท็จ) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
F & F = F (ดูเทียบกับตาราง AND)

หากนาย  B หยิบ ยางลบ มาให้ ผลของเงื่อนไขนี้คือ เท็จ เหตุเพราะว่า
ดินสอ(เป็นเท็จ เพราะไม่ได้หยิบดินสอ) AND(&) ยางลบ(เป็นจริง เพราะหยิบยางลบ) ได้ผลเป็น False(เท็จ) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
& T = F (ดูเทียบกับตาราง AND)

หากนาย  B หยิบทั้ง ปากกา และ ยางลบ มาให้ ผลของเงื่อนไขนี้คือ เท็จ เหตุเพราะว่า
ดินสอ(เป็นเท็จ เพราะไม่ได้หยิบดินสอ) AND(&) ยางลบ(เป็นจริง เพราะหยิบยางลบ) ได้ผลเป็น False(เท็จ) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
F & T = F (ดูเทียบกับตาราง AND)

หากนาย B หยิบทั้ง ดินสอ และ ยางลบ มาให้ ผลของเงื่อนไขนี้เป็น จริง เหตุเพราะว่า
ดินสอ(เป็นจริง เพราะหยิบดินสอ) AND(&) ยางลบ(เป็นจริง เพราะหยิบยางลบ) ได้ผลเป็น True(จริง) เมื่อเขียนให้อยู่ในรูปสัญลักษณ์ทางตรรกะ จะได้
T & T = T (ดูเทียบกับตาราง AND)

 

นิเสธ (Negation)

เนื่องจากค่าความจริง มีแค่ 2 ค่าที่ตรงข้ามกัน คือ True(T) กับ False(F)  การใส่เครื่องหมายนิเสธ(~, !) นั้นก็จะหมายถึงค่าที่ตรงข้ามกันนั่นเอง ดังเช่น

T = ~ F หรือ T = ! F

F = ~ T หรือ F = ! T

ถ้าให้อธิบายเป็นภาษาที่เข้าใจง่ายก็คือ ไม่จริง คือ เท็จ หรือ ไม่เท็จ ก็คือ จริง นั่นเอง

ตัวอย่างการใช้งาน ก็อย่างเช่น

สมมติให้นาย A หยิบปากกา มีค่าความจริงเป็น จริง หมายความว่า นาย A หยิบปากกามาจริง หากใส่นิเสธเข้าไปเป็นดังเช่น

ค่าความจริง = ~ (นาย A หยิบปากกา)  ก็จะได้

ค่าความจริง = ~ T

ค่าความจริง = F

ผลที่ได้คือค่าเท็จนั่นเอง

 

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

ระบบ export ผู้ใช้จากระบบ Joomla

หลายๆคนที่ใช้งาน Joomla CMS อาจจะมีบางครั้งที่ต้องการจะนำรายชื่อผู้ใช้งานบนเว็บไซต์ส่งออกมาเป็นไฟล์ในรูปแบบ XLS (Microsoft Excell) และนอกจากนั้น ยังต้องการข้อมูลในฟิลด์ของผู้ใช้แต่ละคนออกมาด้วย เพื่อที่จะนำข้อมูลดังกล่างมาใช้ทำรายงานในขั้นตอนต่างๆต่อไป แต่ก็มีข้อจำกัดคือไม่มีเครื่องมือที่จะช่วยให้เราสามารถนำรายชื่อผู้ใช้ พร้อมฟิลด์เพิ่มเติม ส่งออกมาเป็นไฟล์ XLS ให้เราได้

ผมมีเครื่องมือที่จะนำเสนอให้ชาวผู้ใช้งาน Joomla CMS ที่ต้องการความต้องการดังกล่าวมาได้ใช้งานกันครับ เครื่องมือตัวนั้นก็คือ คอมโพเน้นท์ที่ชื่อว่า CC JUser Export พัฒนาโดยบริษัท ColorPack Creation Co,.Ltd. โดยผู้พัฒนาชาวไทยฝีมือดี (ผมเอง อิอิ) คอมโพเน้นท์ตัวนี้ พัฒนาต่อยอดมาจาก คอมโพเน้นท์ที่ชื่อว่า Lg-UserExport จากทีม Logigroup ซึ่งความสามารถเดิม จะไม่สามารถดึงฟิลด์ของผู้ใช้เข้ามาในไฟล์รีพอร์ตได้ และนอกจากนั้น ไม่สามารถ Export Users ออกมาเป็นไฟล์ XLS ได้

ซึ่งตัวใหม่ (CC JUser Export) ที่ผมได้นำมาเสนอนั้น สามารถทำได้ครับ กล่าวคือ คอมโพเน้นท์ CC JUser Export สามารถดึงฟิลด์ของผู้ใช้มาทำรายงานได้ และสามารถ Export รายงานออกมาเป็นไฟล์ XLS ได้ครับ

เรามาดูรูป preview กันดีกว่า

 

เห็นแล้วอยากใช้งานกันแล้วใช่มั้ยครับ ดาวน์โหลดที่ลิ้งค์ด้านล่างนี้ได้เลยครับผม

Download CC JUser Export

แนะนำปลั๊กอิน Image Slider ชื่อ Nivo Slider

ใครเป็นนักพัฒนาทำเว็บไซต์ ในหลายๆครั้ง ก็ต้องการการทำแกเลอรี่ หรือทำตัวสไลด์รูปภาพ เพื่อทำรูปภาพสไลด์ในเว็บไซต์ของตน วันนี้ผมมีตัวนึงน่าสนใจ ก็คือ Nivo Slider ครับ ทำเอฟเฟคได้หลากหลายและใช้งานง่าย ตัวนี้เป็น jQuery Plugin นะครับ คือใข้ร่วมกับ jQuery (ต้องการดาวน์โหลด jQuery คลิกที่นี่ http://jquery.com/download เลย) และมีผู้นำมาพัฒนาต่อเป็น Plugin ของ CMS WordPress ดูตัวอย่าง Demo ได้จากรูปด้านล่างนะครับ

 

ถ้าเห็นแล้วอยากใช้งาน สามารถดาวน์โหลดปลั๊กอิน WordPress และ jQuery Plugin ของ Nivo Slider ได้จากที่นี่เลยครับ Download

มารู้จักกับ eyeos-web os กันมั่ง

มีอยู่วันนึงครับ ผมไปค้นหาข้อมูลในอินเตอร์เน็ตเล่นๆ ปรากฎว่าไปเจอข้อมูลบางอย่างค่อนข้างน่าสนใจครับ นั่นก็คือคอนเซ็ปเรื่อง web os นั่นเองครับ ผมถึงกับร้อง ว๊าว เลยทีเดียว หมายความว่ายังไงหรอครับ ก็หมายความว่า เป็นระบบที่เป็นเว็บเบสที่ทำหน้าที่เป็นระบบปฎิบัติการตัวนึงเลยทีเดียว ผมได้ยินมาว่านะครับ ในอีกซัก 2-3 ปีข้างหน้า จะเป็นที่นิยมกันมากเลยทีเดียว

ผมก็นึกต่อไปอีกนะครับ ต่อไประบบปฎิบัติการ(operation system)ในเครื่องคอมพิวเตอร์ของเรา ไม่ต้องลงซอฟต์แวร์อะไรกันแล้วครับ ไปหาใช้เอาบนอินเตอร์เน็ตเอา ตามเว็บไซต์ต่างๆที่ให้บริการอยู่ ก็น่าจะเพียงต่อความต้องการของผู้ใช้แล้วครับ แค่คิดไว้เล่นๆนะครับ แต่ผมค่อนข้างมั่นใจว่า วั้นนั้นต้องมาถึงแน่นอน

และตอนนี้ครับ ผมไปหาเจอมาตัวนึง ค่อนข้างน่าอัศจรรย์มากนั่นก็คือ eyeos ครับ(จาก http://www.eyeos.org) ค่อนข้างดีและน่าสนใจมากเลยทีเดียว สามารถทำเอกสารออนไลน์ได้ อาทิเช่น word document, spread sheet(excel), presentation(power point) และอื่นๆได้อีกนะครับ และนอกจากนั้นยังจะสามารถติดตั้ง app เพิ่มได้อีกด้วย ผมก็หาไปหามาก็ไปเจอ เว็บไซต์ http://eyeos-apps.org ที่แจก app ของ eyeos เพียบเลยครับ

ผมก็เลยไม่รอช้า ลองเอาติดตั้ง แล้วก็ลองเอามาให้เพื่อนๆช่วยกันเล่นนะครับ สามารถเข้าไปลองกันได้เลยนะครับที่ http://myeye.keng-d.com

อ่อ อีกอย่าง ลองเล่นแล้ว ได้ผลเป็นยังไง ชอบหรือไม่ชอบ เข้ามาติชมกันได้นะครับ

มาเล่น CakePHP กันเถอะ

เมื่อประมาณปีสองปีก่อน ผมบังเอิญได้โดเมน .in.th ฟรีมา 1 อันจากบริษัทที่ผมทำงานครับ ผมก็นั่งคิดอยู่ซักพักว่าจะเอามาใช้ทำอะไรดี คิดไปคิดมาก็จดเป็น cakephp.in.th ดีกว่า และก็นำเสนอ CakePHP Framework กันในนั้นซะเลย

ที่มาที่ไปว่าทำไมจะต้องเป็น CakePHP ก็คือ เนื่องจากว่าผมเป็น dev ของ mambo และตาม road map การพัฒนาของแมมโบ้นั้น mambo เวอร์ชั่น 5.0 นั้นจะ implement กันด้วย CakePHP Framework กันเป็นหลักครับ ผมก็เลยถือโอกาสศึกษา CakePHP ไปในตัว และก็ชวนเพื่อนผมมาช่วยกันเล่นด้วยครับ

ส่วนใครสงสัยว่า CakePHP คืออะไรนั้นผมจะบอกในนี้คร่าวๆครับ จะขอยก คำอธิบายของเพื่อนมาเลยก็แล้วกันนะครับ

 



CakePHP คือ Framework ที่พัฒนาด้วยภาษา PHP ที่เป็น Free,Open-Source โดยการออกแบบโปรแกรม(design patterns) แบบ MVC (Model-view-controller) และ ORM (Object-relational_mapping) เข้ามาเป็นมาตรฐานหรือข้อตกลงในการพัฒนาโปรแกรม ส่วนเรื่อง MVC และ ORM สำหรับคนที่ยังไม่รู้ความหมายและหลักการทำงาน สามารถอ่านคำอธิบายในเว็บไซต์ cakephp.in.th ได้นะครับ แต่ตอนนี้เรามาทำความเข้าใจกับ CakePHP framework ตัวนี้กันก่อน

ความหมายของ Framework ก็คือ กรอบของการทำงาน แปลตรงตัวเลยครับ Frame + work แต่ถ้ามองในแง่โปรแกรม ก็จะเป็น ข้อกำหนดหรือขอบเขตในการเขียนโปรแกรมให้เป็นไปในรูปแบบเดียวกัน และสามารถนำไปเขียนเพิ่มเพื่อตอบสนองความต้องการอย่างใดอย่างหนึ่งได้ ดังนั้น CakePHP framework ก็จะมี class และ function ต่างๆ ให้เราได้เรียกใช้ โดยที่เราไม่ต้องไปเสียเวลาเขียนขึ้นมาเอง ซึ่งจะทำให้เกิดความรวดเร็วในการพัฒนา Web Application

ความสามารถใน CakePHP framework

- มีลิขสิทธิ์ที่ยืดหยุ่น

- ทำงานร่วมกับ PHP version 4 และ 5

- รวมคำสั่ง CRUD (Create, read, update and delete) สำหรับ Database ที่ทำให้ง่ายต่อการคิวรี่

- ใช้สถาปัตยกรรม MVC (Model-view-controller)

- มี Helper ช่วยพัฒนาได้ง่ายและรวดเร็ว เช่น AJAX, JavaScript, HTML Forms and อื่นๆ

- มีความปลอดภัยในเรื่อง Email, Cookie, Security, Session,และรองรับการทำงานในรูปแบบ Components

- มีการเรียก URL ที่ส่งค่าแบบสวยงาม

 

น่าจะพอเข้าใจกันบ้างนะครับ ถ้าใครสนใจศึกษาเพิ่มเติม ตามไปอ่านกันได้เลยครับที่ http://www.cakephp.in.th