Share via


取得存取資源的授權

本文可協助您身為開發人員,瞭解如何在取得應用程式的資源訪問許可權時,最好確保 零信任。 若要存取電子郵件或行事曆數據等受保護的資源,您的應用程式需要資源擁有者的 授權。 資源擁有者可以 同意 或拒絕應用程式的要求。 當資源擁有者授與同意時,您的應用程式會收到存取令牌;當資源擁有者拒絕存取時,您的應用程式不會收到存取令牌。

概念性檢閱

您可以使用 Microsoft 身分識別平台 來驗證和授權您的應用程式,以及管理許可權和同意。 讓我們從一些概念開始:

  • 驗證 (有時縮短為 AuthN)是證明您宣告身分識別正確的程式。 Microsoft 身分識別平台 會使用 OpenID 連線 通訊協定來處理驗證。 授權 (有時縮短為 AuthZ)會授與已驗證的一方執行某些動作的許可權。 它會指定已驗證者可以存取的數據。 Microsoft 身分識別平台 會使用 OAuth2.0 通訊協議來處理授權。 授權選項 包括訪問控制清單 (ACL)、角色型存取控制和屬性存取控制 (ABAC)。 驗證通常是授權因素。

  • 委派存取 權(代表登入的使用者)或 直接存取 (僅作為應用程式自己的身分識別)可讓您的應用程式存取數據。 委派存取 需要委派的許可權(也稱為 範圍):客戶端和用戶必須分別獲得授權,才能提出要求。 直接存取 可能需要應用程式許可權(也稱為 應用程式角色):當應用程式角色授與應用程式時,這些角色可以稱為應用程式許可權。

  • 委派的許可權,用於委派的存取權,允許應用程式代表使用者採取行動,只存取使用者可以存取的內容。 應用程式許可權,用於直接存取,允許應用程式存取與許可權相關聯的任何數據。 只有服務主體系統管理員和擁有者可以同意應用程式許可權。

  • 同意 是應用程式接收許可權的方式。 使用者或系統管理員授權應用程式存取受保護的資源。 同意提示會列出應用程式需要的許可權以及發行者資訊。

  • 預先授權 是資源應用程式擁有者授與用戶端應用程式存取權的方式。 他們可以在 Azure 入口網站 中使用PowerShell和 Api,例如 Microsoft Graph 來執行此動作。 他們可以授與資源許可權,而不需要使用者查看預先授權許可權集的同意提示。

委派與應用程式許可權之間的差異

應用程式會以兩種模式運作:當使用者存在(委派許可權)和 沒有使用者 時(應用程式許可權)。 當應用程式前面有使用者時,您必須代表該使用者採取行動;您不應該代表應用程式本身採取行動。 當使用者引導您的應用程式時,您會做為該使用者的委派。 您有權代表令牌所識別的用戶採取行動。

服務類型應用程式(背景工作、精靈、伺服器對伺服器進程)沒有可以自行識別或輸入密碼的使用者。 它們需要應用程式許可權,才能代表自己採取行動(代表服務應用程式)。

零信任 應用程式授權最佳做法

當您連線到應用程式的使用者以及您呼叫的資源時,您的 授權方法 會以元件的形式進行驗證。 當您的應用程式代表使用者採取行動時,我們不信任呼叫的應用程式來告知使用者是誰,或讓應用程式決定用戶是誰。 Microsoft Entra ID 會驗證並直接提供令牌中用戶的相關信息。

當您需要允許應用程式呼叫 API 或授權應用程式,讓應用程式能夠存取資源時,新式授權配置可以透過 許可權和同意架構要求授權。 參考 應用程式屬性 的安全性最佳做法,包括重新導向 URI、存取令牌(用於隱含流程)、憑證和秘密、應用程式標識碼 URI 和應用程式擁有權。

下一步