แบบฝึกหัด - อนุญาตการเข้าถึง Microsoft Graph API ด้วย MSAL
ในแบบฝึกหัดนี้ คุณกําหนดค่าแอปพลิเคชันด้วยสิทธิ์และใช้ MSAL เพื่อเข้าถึงข้อมูลโปรไฟล์ผู้ใช้จาก API ของ Microsoft Graph (MS Graph)
เพิ่มสิทธิ์ของ Microsoft Graph ลงในการลงทะเบียนแอป
บริการเว็บที่รักษาความปลอดภัยโดย Microsoft Entra ID จะกําหนดชุดของสิทธิ์ที่ให้การเข้าถึงฟังก์ชันการทํางานของ API และข้อมูลที่แสดงโดยบริการนั้น ก่อนที่แอปพลิเคชันสามารถเข้าถึงข้อมูลหรือดําเนินการในนามของผู้ใช้ จะต้องร้องขอสิทธิ์เหล่านี้เพื่ออนุมัติโดยผู้ใช้ คุณสามารถกําหนดสิทธิ์ API เหล่านี้ให้กับการลงทะเบียนแอปของคุณจากพอร์ทัล Azure ได้ ต่อไปนี้คือขั้นตอนการกําหนดสิทธิ์ Microsoft Graph API ให้กับแอปพลิเคชันของคุณ
บนหน้าจอ การลงทะเบียนแอป ให้เลือกสิทธิ์ API เพื่อเพิ่มการเข้าถึง API ที่แอปพลิเคชันของคุณต้องการ
เลือก เพิ่มสิทธิ์
ตรวจสอบให้แน่ใจว่าได้เลือกแท็บ API ของ Microsoft
ในส่วน ใช้บ่อย Microsoft API เลือก Microsoft Graphจากนั้นเลือก สิทธิ์ที่ได้รับมอบสิทธิ์
ในส่วน สิทธิ์ที่ได้รับมอบ ให้เลื่อนลงแล้วเลือก User.Read ในรายการ การอนุญาตเฉพาะนี้มีไว้สําหรับการเข้าถึงข้อมูลของผู้ใช้ที่ลงชื่อเข้าใช้จากจุดสิ้นสุด
https://graph.microsoft.com/v1.0/meเลือก เพิ่มสิทธิ์
เรียกใช้แอปพลิเคชัน
คุณสามารถลองเรียกใช้ Graph API บนแอปพลิเคชันที่คุณได้เรียกใช้จากแบบฝึกหัดก่อนหน้าได้
เปิดเบราว์เซอร์ของคุณและนําทางไปยัง
http://localhost:8080/msal4j-servlet-graph/ถ้าคุณยังไม่ได้ลงชื่อเข้าใช้ คุณจะถูกเปลี่ยนเส้นทางเพื่อลงชื่อเข้าใช้ด้วย ID Microsoft Entra ในการลงชื่อเข้าใช้สําเร็จ คุณควรจะเห็นหน้าเพจดังที่แสดงในรูปต่อไปนี้
เลือก Call Graph เพื่อเรียกใช้ไปยังจุดสิ้นสุด
/meของ Microsoft Graph และดูรายละเอียดผู้ใช้ที่แสดง
ภาพรวมของรหัสสําหรับการเข้าถึง Microsoft Graph
คุณสามารถค้นหารหัสเพื่อเข้าถึง Microsoft Graph API ใน CallGraphServlet.java คลาสบริการภายใต้ไดเรกทอรี msal4j/callgraphwebapp/ ของโครงการตัวอย่างได้ ซึ่งจะกําหนดจุดสิ้นสุด /call_graph ในแอปพลิเคชัน ซึ่งทําให้การเรียกใช้ที่ได้รับอนุญาตไปยังจุดสิ้นสุด https://graph.microsoft.com/v1.0/me ของ Microsoft Graph API เพื่อดึงข้อมูลโปรไฟล์ของผู้ใช้ที่ลงชื่อเข้าใช้ ต่อไปนี้เป็นรายละเอียดเพิ่มเติมของรหัสการเข้าถึงกราฟ
ใน ./src/main/resources/authentication.properties ไฟล์ ค่าของ
aad.scopesถูกตั้งค่าเป็นขอบเขต User.Readขอบเขตจะบอกให้ Microsoft Entra ID ทราบถึงระดับการเข้าถึงที่แอปพลิเคชันกําลังร้องขอ และแมปไปยังสิทธิ์ในการลงทะเบียนแอป ตามขอบเขตที่ร้องขอ Microsoft Entra ID แสดงกล่องโต้ตอบความยินยอมแก่ผู้ใช้เมื่อลงชื่อเข้าใช้ ถ้าผู้ใช้ให้ความยินยอมในขอบเขตอย่างน้อยหนึ่งรายการ ขอบเขตเหล่านั้นจะถูกเข้ารหัสเป็นผลลัพธ์
access_tokenส่งกลับในการตอบสนองการรับรองความถูกต้องเมื่อผู้ใช้นําทางไปยัง
/call_graphแอปพลิเคชันจะสร้างอินสแตนซ์ของ IGraphServiceClient (Microsoft Graph SDK Java) โดยส่งผ่านตามโทเค็นการเข้าถึงของผู้ใช้ที่ลงชื่อเข้าใช้ ไคลเอ็นต์ Graph จากที่นี่วางโทเค็นการเข้าถึงในส่วนหัวการอนุญาตของคําขอ จากนั้นแอปจะขอให้ไคลเอ็นต์ Graph เรียกใช้จุดสิ้นสุด/meของ Microsoft Graph เพื่อให้รายละเอียดผลตอบแทนสําหรับผู้ใช้ที่ลงชื่อเข้าใช้ในปัจจุบันโค้ดต่อไปนี้คือทั้งหมดที่จําเป็นสําหรับนักพัฒนาแอปพลิเคชันในการเขียนเพื่อเข้าถึงจุดสิ้นสุด
/meโดยมีเงื่อนไขว่าพวกเขามีโทเค็นการเข้าถึงที่ถูกต้องสําหรับ Graph Service ที่มีขอบเขตUser.Readอยู่แล้ว//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();