MS Graph 可以在沒有個人 ID/密碼的情況下訪問郵箱嗎?
我們的組織正在考慮使用 MS Graph 實作一些郵箱自動化。然而,有人擔心它會暴露所有郵箱的電子郵件。
最壞的情況(即聰明的黑客只使用腳本):是否有任何方法使用 MS Graph 撰寫腳本可以訪問沒有個人 ID/密碼的郵箱?如果他們有一個沒有任何委托的郵箱,那么最大的曝光率是多少?
謝謝!
uj5u.com熱心網友回復:
對于 Ms graph api,它提供了管理帳戶/組/郵件帳戶/事件/日歷/...的能力,如果我們需要使用 graph api,我們必須使用應用程式憑據創建一個 Azure AD 應用程式(基本上,client_secret)。并且 Azure AD 應用應該有足夠的 API 權限,例如我們給權限User.ReadWrite.All
,然后我們可以通過這個 Azure AD 應用使用圖 API 來管理這個租戶中的用戶。當我們添加權限Mail.ReadWrite
時,我們就可以管理電子郵件帳戶。
對于api權限,有2種權限,一種for delegate
,另一種for application
。當我們給delegate api permissin的時候,我們需要先用你自己的賬號(例如[email protected],并且這個賬號有郵件許可)登錄,然后我們可以使用ms graph api列出所有的郵件訊息您的帳戶。
但是當我們給應用程式api權限時,我們不需要先登錄,我們可以直接呼叫graph api,并列出您租戶中任何具有郵件許可證的用戶帳戶的所有郵件訊息。
讓我們回到您的問題,如果腳本可以在沒有個人 ID/密碼的情況下訪問郵箱。我的回答是肯定的。但是我必須得到Azure AD 應用程式和客戶端密碼,然后這個應用程式必須有足夠的 api 權限,比如應用程式權限,Mail.ReadWrite, Mail.Send
并且我需要知道你的電子郵件地址/帳戶。當我得到所有這些資訊時,我可以訪問郵箱。這是一個示例。
using Microsoft.Graph;
using Azure.Identity;
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "tenant_name.onmicrosoft.com";
var clientId = "aad_app_id";
var clientSecret = "client_secret";
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var messages = await graphClient.Users["{email_address/user_account/user_id}"].Messages
.Request()
.Select("sender,subject")
.GetAsync();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/517352.html
上一篇:如何將我的內容放置在側邊欄旁邊?