我們有一個客戶端應用程式,它呼叫 Web API,后者又呼叫 Microsoft Graph。我已經閱讀了有關在 Azure 門戶中授予管理員許可的檔案,但我仍然害怕按下該按鈕,因為我不了解某些概念:
- 在應用程式 A 的頁面上授予管理員同意是允許應用程式 A 訪問其所有必需的范圍,還是允許其他應用程式訪問“公開 API”中定義的應用程式 A 范圍?
- 我是否需要向客戶端應用程式和 Web API 授予管理員同意?或者我必須只為 Web API 授予它,并使客戶端應用程式預授權?
- “授予管理員同意”是否允許應用程式自行呼叫 Microsoft Graph,繞過代表流程?例如,Web API 是否可以在不需要用戶訪問令牌的情況下呼叫 Microsoft Graph?
- 如果我們向 AD 添加新用戶,我是否需要再次按“授予管理員同意”?
- “應用程式注冊”和“企業應用程式”頁面上的“授予管理員同意”之間有什么區別嗎?
uj5u.com熱心網友回復:
- 在應用程式 A 的頁面上授予管理員同意是允許應用程式 A 訪問其所有必需的范圍,還是允許其他應用程式訪問“公開 API”中定義的應用程式 A 范圍?
管理員同意允許應用程式 A 使用其 API 權限頁面上的所有委托和應用程式權限,沒有向應用程式 A 授予其他應用程式的權限。
- 我是否需要向客戶端應用程式和 Web API 授予管理員同意?或者我必須只為 Web API 授予它,并使客戶端應用程式預授權?
您最有可能為兩者授予它。根據第一個答案,向客戶端授予同意不會授予例如 MS Graph 對 API 應用程式的訪問權限。如果客戶端是 API 應用程式的“已知客戶端”(添??加到清單中的 knownClientApplications 屬性),則會提示用戶同意。這對于多層多租戶應用程式很有用,但在您的場景中可能沒有用。
- “授予管理員同意”是否允許應用程式自行呼叫 Microsoft Graph,繞過代表流程?例如,Web API 是否可以在不需要用戶訪問令牌的情況下呼叫 Microsoft Graph?
僅當您授予它應用程式權限時。委派權限始終需要用戶背景關系來呼叫 API。
- 如果我們向 AD 添加新用戶,我是否需要再次按“授予管理員同意”?
否。在委托權限的情況下,管理員同意會創建一個具有 null principalId 的 OAuth2PermissionGrant 物件。這使其適用于當前和未來的所有用戶。
- “應用程式注冊”和“企業應用程式”頁面上的“授予管理員同意”之間有什么區別嗎?
我從未在企業應用程式頁面中使用過,所以我不能肯定。但我猜這是同一回事。權限始終授予服務主體(企業應用程式)而不是應用程式注冊。在應用注冊中單擊授予管理員同意時,它會修改租戶中其服務主體的物體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/381687.html
