權限和同意介紹

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

存取情節

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

影像顯示存取案例的圖例。

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

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

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

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

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

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

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

權限的類型

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

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

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

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

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

權限類型 委派的權限 應用程式權限
應用程式類型 Web / Mobile / 單頁應用程式 (SPA) Web/精靈
存取內容 代表使用者進行存取 無需使用者即進行存取
有權同意者 - 使用者可以同意其資料
- 系統管理員可以同意所有使用者
僅管理員可同意
同意方法 - 靜態:應用程式註冊的已設定清單
- 動態:在登入時要求個別許可權
- 僅限靜態:在應用程式註冊上設定的清單
其他名稱 -範圍
- OAuth2 許可權範圍
- 應用程式角色
- 僅限應用程式的許可權
Microsoft Graph 特定同意 (的結果) oAuth2PermissionGrant 應用程式角色指派

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

  • 撤銷先前授與同意時。
  • 當應用程式編碼為在每次登入期間特別提示同意時。
  • 當應用程式在執行時間使用動態同意來要求新的許可權時。

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

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

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

預先驗證

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

下一步