16 ก.ค. 2021 เวลา 05:50 • การศึกษา
สรุปการใช้งาน Microsoft graph API เพื่อดึงข้อมูลจาก Azure โดยใช้ Python
พอดีเราได้โจทย์มาว่าต้องการดึงข้อมูล user มาจาก Azure AD เพื่อเอาไปใช้จัดการ user บน tableau ต่อไป
ขั้นแรกเริ่มจากการหาวิธีดึงข้อมูลจาก azure โดยใช้ API ก่อน
จากที่ทำการค้นคว้ามาพบว่า การที่เราจะเข้าไปอ่านข้อมูลที่เกิดขึ้นบน azure ได้เราต้องใช้ API ของ microsoft graph
ขั้นแรก
เราเข้าไปดูที่ API document ก่อนว่ามีโครงสร้างการใข้งานอย่างไรบ้าง
ลองเข้าไปดูตัวอย่างการใช้งานเพื่อดึงข้อมูล user list
รายละเอียดที่ได้ตามนี้เลย
การตั้ง endpoint / url : https://graph.microsoft.com/v1.0/users
ในกรณีนี้ใช้ http method : GET
แล้วมีการกำหนด headers ตามนี้
จะเห็นว่าในการส่ง request มีการใช้ token โดยฝั่งไปกับส่วนของ headers
เราลองไปหาต่อดูว่าเราจะได้ token มาได้อย่างไร
ขั้นที่ 2
มาตามหา token กัน
token มีไว้เพื่อใช้เป็นตัวยืนยันสิทธิ์ของเรา เวลาเราส่ง request API ไปดึงข้อมูลออกมา
สำหรับ python ทาง microsoft ได้สร้าง library เอาไว้ให้เราใช้เรียบร้อยแล้ว
เริ่มแรกให้เรารัน >>pip install msal เพื่อทำการติดตั้ง library
จากนั้นให้เราเตรียม function สำหรับรับ token ผ่าน msal ตามนี้
ถ้าเรา set ค่า parameter ใน config เรียบร้อยเราจะได้ผลลัพธ์ตามนี้
มา set ค่าใน config กัน
เรามาดูค่าที่เราต้องไปหามาใส่ภายใน config กันก่อน
ค่าที่เราต้องเอามาใส่คือ tenant-id ของเรา
โดยเริ่มจากสมัครใช้งาน microsoft azure ก่อน
แล้วเข้าไปที่ portal
เมื่อเข้ามาแล้วเราจะพบหน้าต่างประมาณนี้
เรามาสร้าง azure active directory กันก่อน โดยการกดเมนูมุมซ้ายบน > create a resource > search "azure active directory"
กด create
ตั้งชื่อ กำหนด region ให้เรียบร้อย > next review > create ใช้เวลาในการสร้างสักพักหนึ่ง
ให้ลอง sign-out แล้ว sign-in เข้ามาใหม่ > กดตรง account ของเรา > switch directory > เลือก directory ของเราที่สร้างไว้
ภายใต้ชื่อของเราจะเปลี่ยนชื่อจาก default directory เป็นชื่อ directory ของเราแล้ว
ให้เราเลือก azure active directory จากเมนูซ้ายบน > เลือก overview
เราจะเห็น tenant id ของเราแสดงอยู่ ให้ copy มาใส่ใน config ของเรา
ได้หน้าตาประมาณนี้
2. "client_id": "{application-id}",
ให้เราสร้าง app registeration โดยกดจากเมนูด้านซ้ายมือ > +new regis..
ตั้งชื่อ + เลือก option ตามนี้ > register
รอสักครู่เมื่อ register สำเร็จเราจะเห็นค่า appplication (client) ID
ให้ copy ไปใส่ไว้ใน config
ได้หน้าตาประมาณนี้ "client_id": "sdkfjie-weqw23a-r33........",
3. "secret": "{client-secret-value}",
ให้เราเลือกที่เมนูด้านซ้าย certificates & secrets > new client secret
ตั้งชื่อและระยะเวลาของ secret นี้ให้เรียบร้อย
!!!!!! สำคัญมาก !!!!!! เมื่อสร้าง secret เสร็จเราจะเห็นค่าที่ชื่อว่า value ให้เรา copy save เก็บไว้ก่อนเลย เพราะมันจะขึ้นมาให้เราเห็นเพียงครั้งเดียวเท่านั้น ระวังด้วย
นำค่า value มาใส่ใน config ก็เป็นอันจบกระบวนการ
ลองรัน fuction ที่เตรียมไว้ดู เราจะได้ token มาไว้ใช้ยิง api กันแล้ว
ขั้นที่3
ลองยิง api โดยสร้าง request ผ่าน library ของ python ดังนี้
ลองรันดูเราจะพบว่าเกิด error ขึ้น
error นี้เกิดขึ้นเพราะเรายังไม่ได้สิทธิ์ในการอ่าน user นั้นเอง
เราสามารถเพิ่มสิทธิ์ได้โดย กลับไปที่ azure > app registration > API permission
กด add permission > Microsoft Graph
กด application permission
เลื่อนหา tab user เลือกทั้งหมด > add permissions
กด grant admin consent for.... > yes
ลองรัน code อีกรอบ
เรียบร้อย เราสามารถอ่านข้อมูลจาก Azure ได้แล้ว
โฆษณา