取得存取資源的授權
本文可協助您身為開發人員,瞭解如何在取得應用程式的資源訪問許可權時,最好確保 零信任。 若要存取電子郵件或行事曆數據等受保護的資源,您的應用程式需要資源擁有者的 授權。 資源擁有者可以 同意 或拒絕應用程式的要求。 當資源擁有者授與同意時,您的應用程式會收到存取令牌;當資源擁有者拒絕存取時,您的應用程式不會收到存取令牌。
概念性檢閱
您可以使用 Microsoft 身分識別平台 來驗證和授權您的應用程式,以及管理許可權和同意。 讓我們從一些概念開始:
驗證 (有時縮短為 AuthN)是證明您宣告身分識別正確的程式。 Microsoft 身分識別平台 會使用 OpenID 連線 通訊協定來處理驗證。 授權 (有時縮短為 AuthZ)會授與已驗證的一方執行某些動作的許可權。 它會指定已驗證者可以存取的數據。 Microsoft 身分識別平台 會使用 OAuth2.0 通訊協議來處理授權。 授權選項 包括訪問控制清單 (ACL)、角色型存取控制和屬性存取控制 (ABAC)。 驗證通常是授權因素。
委派存取 權(代表登入的使用者)或 直接存取 (僅作為應用程式自己的身分識別)可讓您的應用程式存取數據。 委派存取 需要委派的許可權(也稱為 範圍):客戶端和用戶必須分別獲得授權,才能提出要求。 直接存取 可能需要應用程式許可權(也稱為 應用程式角色):當應用程式角色授與應用程式時,這些角色可以稱為應用程式許可權。
委派的許可權,用於委派的存取權,允許應用程式代表使用者採取行動,只存取使用者可以存取的內容。 應用程式許可權,用於直接存取,允許應用程式存取與許可權相關聯的任何數據。 只有服務主體的系統管理員和擁有者可以同意應用程式許可權。
同意 是應用程式接收許可權的方式。 使用者或系統管理員授權應用程式存取受保護的資源。 同意提示會列出應用程式需要的許可權以及發行者資訊。
預先授權 是資源應用程式擁有者授與用戶端應用程式存取權的方式。 他們可以在 Azure 入口網站 中使用PowerShell和 Api,例如 Microsoft Graph 來執行此動作。 他們可以授與資源許可權,而不需要使用者查看預先授權許可權集的同意提示。
委派與應用程式許可權之間的差異
應用程式會以兩種模式運作:當使用者存在(委派許可權)和 沒有使用者 時(應用程式許可權)。 當應用程式前面有使用者時,您必須代表該使用者採取行動;您不應該代表應用程式本身採取行動。 當使用者引導您的應用程式時,您會做為該使用者的委派。 您有權代表令牌所識別的用戶採取行動。
服務類型應用程式(背景工作、精靈、伺服器對伺服器進程)沒有可以自行識別或輸入密碼的使用者。 它們需要應用程式許可權,才能代表自己採取行動(代表服務應用程式)。
零信任 應用程式授權最佳做法
當您連線到應用程式的使用者以及您呼叫的資源時,您的 授權方法 會以元件的形式進行驗證。 當您的應用程式代表使用者採取行動時,我們不信任呼叫的應用程式來告知使用者是誰,或讓應用程式決定用戶是誰。 Microsoft Entra ID 會驗證並直接提供令牌中用戶的相關信息。
當您需要允許應用程式呼叫 API 或授權應用程式,讓應用程式能夠存取資源時,新式授權配置可以透過 許可權和同意架構要求授權。 參考 應用程式屬性 的安全性最佳做法,包括重新導向 URI、存取令牌(用於隱含流程)、憑證和秘密、應用程式標識碼 URI 和應用程式擁有權。
下一步
- 自定義令牌 描述您可以在 Microsoft Entra 令牌中接收的資訊。 它說明如何自定義令牌,以改善彈性和控制,同時提高應用程式零信任安全性與最低許可權。
- 在令牌 中設定群組宣告和應用程式角色會示範如何使用應用程式角色定義來設定應用程式,並將安全組指派給應用程式角色。 這些方法有助於改善彈性和控制,同時以最低許可權增加應用程式零信任安全性。
- 開發委派的許可權策略可協助您實作最佳方法來管理應用程式中的許可權,並使用 零信任 原則進行開發。
- 開發應用程式許可權策略 可協助您決定認證管理的應用程式許可權方法。
- 當沒有任何使用者 說明 Azure 資源的受控識別為何是 Azure 上服務(非使用者應用程式)的最佳客戶端認證作法時,請提供應用程式身分識別認證。
- 授權最佳做法 可協助您為應用程式實作最佳的授權、許可權和同意模型。
- 在應用程式開發生命週期中使用 零信任 身分識別和存取管理開發最佳做法,以建立安全的應用程式。
- 使用 零信任 身分識別方法來建置應用程式,會從 零信任 身分識別和存取管理開發最佳做法一文繼續進行,以協助您使用 零信任 方法來識別軟體開發生命週期 (SDLC) 中的身分識別。