分享方式:


Microsoft 身分識別平台上的管理員同意

在租用戶內部授與某些權限之前,需要獲得管理員的同意。 您也可以使用管理員同意端點來授與整個租用戶的權限。

一般而言,當您建置使用管理員同意端點的應用程式時,應用程式需要頁面或檢視,管理員可以在其中核准應用程式權限。 此頁面可以是應用程式註冊流程的一部分、應用程式設定的一部分,或是專用的「連接」流程。 在許多案例中,只有在使用者已使用公司或學校 Microsoft 帳戶登入之後,應用程式才能夠顯示此「連線」檢視。

將使用者登入應用程式時,您可以先識別管理員所屬的組織,再要求他們核准必要的權限。 雖然並非絕對必要,但這麼做可協助您為組織使用者建立更直覺的體驗。

向目錄管理員要求權限

當您已準備好向組織的管理員要求權限時,您可以將使用者重新導向至 Microsoft 身分識別平台管理員同意端點

https://login.microsoftonline.com/{tenant}/v2.0/adminconsent
        ?client_id=00001111-aaaa-2222-bbbb-3333cccc4444
        &scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
        &redirect_uri=http://localhost/myapp/permissions
        &state=12345
參數 條件 描述
tenant 必要 您想要從中要求權限的目錄租用戶。 可以提供 GUID 或易記的名稱格式,或是一般會參考使用 organizations (如範例所示)。 請勿使用 'common',因為個人帳戶只能在租用戶的內容中提供管理員同意。 若要確保能最適切地相容於管理租用戶的個人帳戶,請盡可能使用租用戶識別碼。
client_id 必要 Microsoft Entra 系統管理中心 - 應用程式註冊體驗指派給您應用程式的「應用程式 (用戶端) 識別碼」
redirect_uri 必要 您想要將回應傳送至其中,讓應用程式處理的重新導向 URI。 其必須完全符合您在應用程式註冊入口網站中註冊的其中一個重新導向 URI。
state 建議需求 要求中包含,也會在權杖回應中傳回的值。 其可以是任何您所需內容的字串。 使用狀態來編碼應用程式中的使用者狀態相關資訊,再進行驗證要求,例如其所在的頁面或檢視。
scope 必要 定義應用程式所要求的權限集合。 這可以是靜態範圍 (使用 /.default) 或動態範圍。 這可以包括 OIDC 範圍 (openidprofileemail)。

此時,Microsoft Entra ID 需要租用戶管理員登入才能完成要求。 系統會要求管理員核准您在 scope 參數中要求的所有權限。 如果您已使用靜態 (/.default) 值,它的運作方式就像 v1.0 管理員同意端點,並為在所需權限 (使用者和應用程式) 中找到的所有範圍要求同意。 為了要求應用程式權限,必須使用 /.default 值。 如果您不希望管理員在使用 /.default 時一律在管理員同意畫面中看到指定的權限,則最佳做法是不要將權限放置所需權限部分。 相反,您可以使用動態同意在執行階段增加您希望在同意畫面中的權限,而不是使用 /.default

成功的回覆

如果系統管理員為您的應用程式核准權限,則成功的回應看起來會像這樣︰

http://localhost/myapp/permissions
    ?admin_consent=True
    &tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee
    &scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
    &state=12345
參數 描述
tenant 將應用程式所要求的權限授與應用程式的目錄租用戶 (採用 GUID 格式)。
state 一個包含在要求中而將一併在權杖回應中傳回的值。 其可以是任何您所需內容的字串。 此狀態用於在驗證要求出現之前,於應用程式中編碼使用者的狀態資訊,例如之前所在的網頁或檢視。
scope 針對應用程式授與存取的授權集。
admin_consent 將設定為 True

警告

永遠不要使用 tenant 參數的「租用戶識別碼」值來驗證或授權使用者。 不良的動作項目可以更新和傳送租用戶識別碼值,以模擬對應用程式的回應。 這可能會導致向安全性事件公開您的應用程式。

回覆錯誤

http://localhost/myapp/permissions
        ?admin_consent=True
        &error=consent_required
        &error_description=AADSTS65004%3a+The+resource+owner+or+authorization+server+denied+the+request.%0d%0aTrace+ID%3a+0000aaaa-11bb-cccc-dd22-eeeeee333333%0d%0aCorrelation+ID%3a+8478d534-5b2c-4325-8c2c-51395c342c89%0d%0aTimestamp%3a+2019-09-24+18%3a34%3a26Z
        &state=12345

除了在成功回應中看到的參數之外,錯誤參數如下所示。

參數 描述
error 用以分類發生的錯誤類型與回應錯誤的錯誤碼字串。
error_description 可協助開發人員識別錯誤根本原因的特定錯誤訊息。
state 一個包含在要求中而將一併在權杖回應中傳回的值。 其可以是任何您所需內容的字串。 此狀態用於在驗證要求出現之前,於應用程式中編碼使用者的狀態資訊,例如之前所在的網頁或檢視。
admin_consent 將設定為 True,以表示管理員同意流程發生此回應。

下一步