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

某些許可權需要系統管理員同意,才能在租使用者內授與這些許可權。 您也可以使用管理員同意端點,將許可權授與整個租使用者。

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

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

向目錄管理員要求許可權

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

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

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

成功的回覆

如果系統管理員核准應用程式的許可權,成功的回應如下所示:

http://localhost/myapp/permissions
    ?admin_consent=True
    &tenant=fa00d692-e9c7-4460-a743-29f2956fd429
    &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+d320620c-3d56-42bc-bc45-4cdd85c41f00%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 表示此回應發生在系統管理員同意流程上。

下一步