2017-09-22 91 views
1

我創建了一個調用Web API的示例Web應用程序,並使用針對Azure AD的oAuth代碼授予流。Azure AD中註冊了Azure AD.Application,並且我通過Azure門戶也授予了必需的權限。一切似乎按預期工作。Azure授權和應用程序權限優先

有兩個選項允許

  • 代理權限

  • 應用程序許可

它是推薦使用的混合樣的權限設置程序(App +代表)爲您應用?

如果我在委託和應用程序上對我的API提供類似的權限,哪個權限集優先?它將取決於oAuth流量,例如代碼授予還是隱式?

在我的代碼中,如何區分這些權限集,同時訪問相同的資源。我只想調用用戶上下文,即使同一類型的應用程序權限已經存在?

回答

3

應用程序權限和委託權限是完全獨立的。

當您按照Client Credential Flow(也稱爲「僅應用程序流」)應用程序權限時適用。當您遵循此流程時,AAD將嘗試根據應用程序註冊中預定義的應用程序權限向客戶端應用程序授予權限。這些權限將出現在role索賠中的App Only令牌中。

在幾乎所有涉及用戶的流程中(On-Behalf-OfAuthorization Code Grant Flow,Implicit Grant Flow等等),AAD都會嘗試根據預定義的委託權限向客戶端授予權限。這些權限將出現在scp(範圍)聲明中的App +用戶令牌中。

通過在獲取資源的訪問令牌時調整身份驗證方法,可以控制您的應用授予的權限種類。

+0

謝謝@Shawn,你是說應用程序和委託權限(在Azure門戶下)是互斥類型。即使我們在用戶+應用程序(授權流程)的情況下從Azure門戶應用這兩種類型的複選框,我們也只獲得委託權限(角色)。它依賴於你的流類型,然後它尋找權限類型,例如,如果流類型是用戶+應用程序(授予),將只應用委託複選框,如果流只是應用程序(客戶端的信譽),它會僅應用應用程序許可。 –

+2

「如果流類型爲用戶+應用程序(授予),將僅應用委派的複選框,如果流只是應用程序(客戶端信譽),它將僅應用應用程序權限」 - 正確。 – Saca

+0

謝謝@saca –