權限和同意介紹

若要存取受保護的資源,例如電子郵件或行事歷資料,您的應用程式需要資源擁有者的授權。 該資源擁有者可以同意或拒絕您的應用程式要求。 了解這些基本概念可協助您組建更安全且值得信任的應用程式,其只會要求應用程式所需的存取權,在需要時,向其使用者和管理員要求存取權。

存取情節

身為應用程式開發人員,您必須識別應用程式將用什麼方式存取資料。 應用程式可以使用委派的存取權,代表登入的使用者或僅限應用程式存取權,只做為應用程式自己的身分識別。

此圖顯示存取案例的圖例。

委派存取 (代表使用者進行存取)

在此存取情節中,使用者已登入用戶端應用程式。 用戶端應用程式會代表使用者存取資源。 委派存取需要委派權限。 用戶端和使用者都必須另外取得授權,才能提出要求。 如需委派存取案例的詳細資訊,請參閱 委派存取案例

必須授與正確的委派權限,以使用用戶端應用程式。 委派權限也可以稱為範圍。 範圍是指定資源的許可權,代表用戶端應用程式可以代表使用者存取的內容。如需範圍的詳細資訊,請參閱 範圍和許可權

對於使用者,該授權依靠使用者已授與的使用權限,允許其存取資源。 例如,使用者可以透過 Azure Active Directory (Azure AD 來存取目錄資源,) 角色型存取控制 (RBAC) ,或透過 Exchange Online RBAC 存取郵件和行事曆資源。 如需應用程式 RBAC 的詳細資訊,請參閱 應用程式的 RBAC

僅限應用程式存取 (沒有使用者)

在此存取情節中,應用程式會在沒有使用者登入的情況下自行運作。 應用程式存取用於自動化和備份等情節中。 此情節包含以背景服務或精靈身分執行的應用程式。 適用於不想讓特定使用者登入時,或當所需的資料無法保留範圍為單一使用者。

僅限應用程式存取會使用應用程式角色,而不是委派的範圍。 透過同意授與時,應用程式角色也可能稱為應用程式許可權。 針對僅限應用程式存取,用戶端應用程式必須獲授與其呼叫之資源應用程式的適當應用程式角色,才能存取要求的資料。 如需將應用程式角色指派給用戶端應用程式的詳細資訊,請參閱 將應用程式角色指派給應用程式

權限的類型

委派權限會用於委派的存取情節中。 這些權限可讓應用程式代表使用者採取行動。 應用程式永遠無法存取登入使用者本身無法存取的任何專案。

例如,假設應用程式已代表使用者 Tom 被授與 Files.Read.All 委派權限。 該應用程式將只能讀取 Tom 個人可以存取的檔案。

應用程式許可權,有時稱為應用程式角色會在僅限應用程式存取案例中使用,而不會有登入的使用者存在。 應用程式將能夠存取與權限相關聯的任何資料。 例如,授與 Files.Read.All 應用程式權限的應用程式將能夠讀取租用戶中的任何檔案。 只有服務主體的管理員或擁有者可以同意應用程式權限。

還有其他方式可以授與應用程式僅限應用程式存取權的授權。 例如,可以指派 Azure AD RBAC 角色給應用程式。

委派和應用程式許可權的比較

委派的權限 應用程式權限
應用程式類型 Web / 行動 / 單頁應用程式 (SPA) Web / 精靈
存取內容 代表使用者進行存取 無需使用者即進行存取
有權同意者 - 使用者可以同意其資料
- 系統管理員可以同意所有使用者
只有系統管理員可以同意
其他名稱 -範圍
- OAuth2 許可權範圍
- 應用程式角色
- 僅限應用程式的許可權
Microsoft Graph 特定同意 (的結果) oAuth2PermissionGrant 應用程式角色指派

授與應用程式權限的其中一種方式是透過同意。 同意是一道流程,可讓使用者或管理員授與應用程式存取受保護資源的權限。 例如,當使用者第一次嘗試登入應用程式時,應用程式可以要求權限以檢視使用者設定檔,並讀取使用者信箱中的內容。 使用者會看到應用程式透過同意提示所要求的權限清單。 使用者可能會看到同意提示的其他案例包括:

  • 撤銷先前授與同意時。
  • 當應用程式編碼為在每次登入期間特別提示同意時。
  • 當應用程式使用累加式或動態同意,視需要事先要求某些許可權和更多許可權時。

同意提示的主要詳細資料為應用程式所需的權限清單以及發行者資訊。 如需管理員和終端使用者同意提示和同意體驗的詳細資訊,請參閱應用程式同意體驗

當使用者嘗試登入應用程式時,就會觸發使用者同意事件。 該使用者會提供其登入資訊。 會針對這些登入資訊進行檢查,以判斷是否已授與同意。 如果必要許可權沒有任何先前的使用者或管理員同意記錄存在,使用者會顯示同意提示,並要求授與應用程式所要求的許可權。 在許多情況下,管理員可能需要代表使用者授與同意。

依據某些應用程式所需的權限,其可能需要系統管理員授與同意。 例如,應用程式許可權和許多高許可權委派許可權只能由系統管理員同意。 管理員可以為自己或為整個組織授與同意。 如需使用者和管理員同意的詳細資訊,請參閱 使用者和管理員同意概觀

預先驗證

預先授權可讓資源應用程式擁有者授與權限,而不需要使用者再次檢視已預先授權之相同權限集的同意提示。 如此一來,已預先授權的應用程式就不會要求使用者同意權限。 資源擁有者可以在 Azure 入口網站預先授權用戶端應用程式,或使用 PowerShell 和 API,例如 Microsoft Graph。

下一步