การเชื่อมต่อ OAuth2 ด้วย WordPress

อยาก  Login ด้วย OAuth2 กับ WordPress ต้องทำอย่างไร สำหรับตัวอย่างนี้จะทำการติดตั้งบน WordPress 5.1 ผ่าน Plugin Simple Single Sign On หลังจากติดตั้ง WordPress เสร็จ เข้าหน้า Administrator แล้วทำการกด Install เพื่อเข้าไปยังหน้าติดตั้ง Extension เพิ่มเติม ทำการเพิ่มปลั๊กอินใหม่ดังรูป ทำการค้นหา single sign on และทำการ Install Now จากนั้นทำการกด Activate จากนั้นทำการตั้งค่าโดยข้าม Step 1 ไปตั้งค่า Step 2 เนื่องจากได้มีการตั้งค่า WP OAuth Server ให้รองรับไว้อยู่แล้ว หลังจากนั้นทำการทดสอบ Login โดยกดปุ่ม Single Sign On เพิ่งเท่านี้ก็จะสามารถใช้งานได้ แต่ยังเป็นแบบเลือกได้ว่าจะ Login แบบ Local หรือผ่าน OAuth โดยอาจจะทำเป็นปุ่มในหน้าแรกเพื่อให้กด Login ก็ได้เช่นกัน

Read More »

การเชื่อมต่อ OAuth2 ด้วย Joomla

อยาก  Login ด้วย OAuth2 กับ Joomla ต้องทำอย่างไร              สำหรับตัวอย่างนี้จะทำการติดตั้งบน Joomla 3.9.3 ผ่าน Plugin MiniOrange OAuth Client หลังจากติดตั้ง Joomla เสร็จ เข้าหน้า Administrator แล้วทำการกด Install เพื่อเข้าไปยังหน้าติดตั้ง Extension เพิ่มเติม หลังจากนั้นกด Add Install from Web ค้นหาชื่อ oauth ติดตั้ง miniOrange OAuth Client  หลังจากติดตั้งเสร็จให้ทำการเปิด Plugins เพิ่มเติมดังรูป จากนั้นทำการตั้งค่าโดยสำหรับ miniOrange ต้องสมัครใช้งานก่อน เพราะมีทั้งแบบฟรีและไม่ฟรี แต่เราจะใช้เฉพาะในส่วนของฟรี ในการสมัครต้องใส่ email และตั้งรหัสผ่าน หลังจากติดตั้ง Joomla เสร็จให้ทำการกด Install เพื่อเข้าไปยังหน้าติดตั้ง Extension เพิ่มเติม จากนั้นทำการตั้งค่าเกี่ยวกับ OAuth สามารถกดทดสอบการ Authen ได้ที่ปุ่ม Test Configuration จะปรากฎหน้า Login เพื่อเข้าสู่ระบบ     หลังจาก Login เสร็จจะคืนค่า User Profile ดังรูป           ในการเอาไปใช้งานต่อให้ทำการสร้างปุ่ม ชี้ไปยัง http://localhost/joomla/?morequest=oauthredirect&app_name=other เพื่อเข้าใช้งาน OAuth ลองไปทำต่อดูครับ

Read More »

ทดสอบเชื่อมต่อ OAuth2 ด้วย Postman

ต้องการทดสอบใช้งาน OAuth2 แต่ยังไม่รู้เลยว่าต้องทำยังไง              ถ้าต้องการทดสอบเบื้องต้นว่า OAuth2 ใช้งานอย่างไร หรือต้องการทดสอบอะไรบางอย่างก็สามารถใช้  Postman ทดสอบได้เลยครับ โดยไม่ต้องเขียนโปรแกรม ซึ่งก่อนอื่นต้องทำการติดตั้งโปรแกรมให้เรียบร้อยก่อนจาก Link : https://sysadmin.psu.ac.th/2017/04/23/postman  ตัวอย่างการเชื่อมต่อแบบ Authorization Code จากนั้นทำการกรอกรายละเอียด ซึ่งรายละเอียดทางผู้ดูแลจะแจ้งให้ทราบเมื่อขอเปิดใช้บริการ จากนั้นจะปรากฎหน้าให้ Login เข้าสู่ระบบ หลังจาก Login ก็จะปรากฎหน้า Token นำไปใช้ขอบริการข้อมูล จะได้ access_token ไปใช้งาน โดยจากตัวอย่างจะเห็นว่ามีระยะเวลาหมดอายุ 3600 วินาที หรือ 1 ชม.นั่นเอง ส่วนคำว่า bearer เป็นชนิดของ Token ซึ่งชนิดมีผลต่อรูปแบบความปลอดภัยที่แตกต่างกัน ซึ่งจะไม่ได้กล่าวถึงรายละเอียด ลองไปศึกษาดูครับ ในส่วนของ OAuth2 แบบอื่น ๆ ศึกษาเพิ่มเติมได้จาก https://sysadmin.psu.ac.th/2017/04/23/what-is-oauth2/ รวมถึงตัวอย่างการเชื่อมต่อ OAuth2 กับ UserGrid ได้ที่ https://sysadmin.psu.ac.th/2017/04/19/auth-role-usergrid/ ====================== References : [1] https://sysadmin.psu.ac.th/2017/04/23/postman [2] https://sysadmin.psu.ac.th/2017/04/23/what-is-oauth2/ [3] https://sysadmin.psu.ac.th/2017/04/19/auth-role-usergrid/

Read More »

การติดตั้ง Postman

โปรแกรม Postman เป็นโปรแกรมสำหรับทดสอบเรียกใช้ Rest Web Service และทดสอบ OAuth              โปรแกรมที่ได้รับความนิยมเป็นอย่างสูงในการทดสอบใช้งาน Rest และ OAuth  ตัวหนึ่งมีชื่อว่า Postman ซึ่งสามารถเรียกใช้ได้ทั้ง Windows, Linux และ Mac ซึ่งเมื่อก่อนจะเป็น Extension ของ Google Chrome แต่หลังจาก Chrome Update ครั้งใหญ่ได้มีเปลี่ยนเป็นโปรแกรมติดตั้งแยกเฉพาะ โดยมีวิธีติดตั้งดังนี้ 1) ทำการ Download โปรแกรม ที่นี่ https://www.getpostman.com/downloads/ 2) ทำการติดตั้ง Postman 3) จากนั้นจะปรากฏหน้า Login ถ้า Login ก็จะมีระบบช่วยจำค่าต่าง ๆ ที่เคยตั้งไว้ แต่ถ้าไม่ต้องการ Login ก็กดตามรูปเลยครับ 4) จะได้หน้าตาโปรแกรมดังรูป 5) ตัวอย่างการเรียกใช้งานเราสามารถใช้ URL ที่ต้องการเพื่อเรียกใช้ โดยสามารถใส่ Header,GET,POST และ Reset Web Service ดังรูป 6) ตัวอย่าง Option ในส่วนของ Authorization จะมีให้เลือกมากมายกว่า Version ก่อน ๆ ในตอนต่อไปก็จะมาทดสอบใช้ Postman ในการทดสอบการใช้งาน OAuth2 กันครับ

Read More »

เรียนรู้เทคโนโลยี OAuth2

OAuth2 คืออะไร ทำไมต้องใช้              OAuth2 คือมาตรฐานหนึ่งของระบบยืนยันตัวตน และจัดการสิทธิ์การเข้าใช้งานระบบต่าง ๆ เป็นมาตรฐาน rfc6747[1] ที่ใช้สำหรับ Client เชื่อมต่อกับ Server ที่ใช้ในการ Authen & Authorize เพื่อให้ได้รับสิ่งที่เรียกว่า Access Token เพื่อใช้แทน Username และ Password (สามารถใช้อย่างอื่นเพื่อขอ Token ก็ได้) เพื่อนำไปใช้กับบริการอื่น ๆ ทำให้มีความปลอดภัยมากขึ้น รวมถึงบอกว่าทำมีสิทธิ์ทำอะไรได้บ้างกับบริการนั้น ๆ (จริง ๆ แล้วถ้า Access Token หลุดก็เอาไปเข้าระบบอื่น ๆ ได้ อาจจะต่างตรงแค่ไม่เห็น Password) โดยแนะนำต้องใช้คู่กับ https อีกชั้นเพื่อความปลอดภัยสูงสุด โดยแสดงภาพคร่าว ๆ เป็น Protocol Flow ดังรูป[2]               โดย Access Token จะมีเวลาจำกัดในการใช้งานเมื่อ Token หมดอายุ ก็ต้องไปขอใหม่ เมื่อเลิกใช้งานก็ขอยกเลิก Token รูปแบบการใช้งานมี 4 รูปแบบหรือเรียกว่า grant_type โดยแต่ละแบบมีรายละเอียดดังนี้[3] Authorization Codeใช้สำหรับ Web Server ที่ใช้ Code ด้านหลังในการเชื่อมต่อกับ OAuth Server โดยไม่ได้เปิดเผยให้สาธารณะเห็น อธิบายเป็นลักษณะการใช้งานคือ – ผู้ใช้งานเข้า Web Site – จะมีให้กด Login Facebook, Twitter, Google หรืออื่น ๆ  – เมื่อผู้ใช้กดก็จะเด้งให้ไป Login ที่ผู้ให้บริการนั้น ๆ ถ้าเคย Login ไว้แล้วก็จะข้ามขั้นตอนนี้ไป – ถ้าผู้ให้บริการนั้น ๆ เช่น Facebook จะให้กดยอมรับข้ออนุญาต ส่วนมากจะถามเรื่องสิทธิ์ในการเข้าถึงข้อมูลส่วนตัว – เมื่อผู้ใช้กดอนุญาต ก็จะกลับมายัง Web Site โดยในเบื้องหลัง WebSite จะได้ authorization code มาเรียกร้อยแล้วจากผู้ให้บริการ – จากนั้นทาง Web Site ก็สามารถเข้าถึงข้อมูลของผู้ให้บริการนั้น ๆ ได้ตามสิทธิที่อนุญาตไว้ วิธีใช้ authorization code มีปุ่ม login ซึ่งมี link มี parameter คล้ายๆแบบนี้ https://[oauth-server]/authorize?response_type=code&client_id=testclient&client_secret=testpass&redirect_uri=http%3A%2F%2F10.1.0.20%3A32778%2F%3Fauth%3Dsso เมื่อกดปุ่ม login ระบบจะต้องแจ้งว่า จะขอใช้สิทธิเรื่องใดบ้าง เมื่อผู้ใช้กดตกลงอนุญาต หน้าจอจะถูกพาไปยัง redirect_uri ที่ระบุไว้ พร้อมทั้งส่ง authorization code มาให้ด้วย ซึ่งจะมีหน้าตาประมาณนี้ https://yoursite.com/oauth/callback?code=xxx อ่าน code ออกมาเพื่อนำไปขอ access_token กับ API ของผู้ให้บริการ login ตัวนั้นๆ POST https://api.blah.com/oauth/token?grant_type=authorization_code&code=xxx&redirect_uri=xxx&client_id=xxx&client_secret=xxx ค่า client_id, client_secret โดยมาก เจ้าของ login API (Identity provider) จะเป็นคนกำหนดมาให้ หลังจากส่ง code ด้วย HTTP method POST และบอกว่าเป็น grant_type แบบ authorization_code ไปแล้ว client จะได้ access_token กลับมา เราจะเอา access_token นั้นในการเรียก API อื่น ๆ

Read More »