簡體   English   中英

Azure AD應用程序 - 需要角色分配+為應用程序添加角色分配?

[英]Azure AD Application - Require Role Assignment + Add a role assignment for an Application?

我有一個MVC Web應用程序(WebAPI + Angular)部署到Azure作為Web應用程序(而不是API應用程序),設置為使用設置 - >身份驗證/授權 - > AAD - > Express進行保護。 這創建了一個與Web App同名的AD應用程序,並且作為普通的Web用戶(在目錄中,使用OAuth),它按預期工作。

但是我也有外部自動化需要直接調用WebAPI控制器,因此我需要以編程方式獲取Bearer令牌以傳遞這些請求。

當“需要訪問APP的用戶分配”==否時,這一切都正常。 但這還不夠,因為目錄中的每個人都不應該訪問此應用程序。

翻轉該開關會導致錯誤:

應用程序“AppId”未分配給應用程序“AppId”的角色。

正在使用的代碼:

    var aadLoginUri = "http://login.microsoftonline.com/{0}";
    var tenantId = "[xxx].onmicrosoft.com";
    var authority = String.Format(CultureInfo.InvariantCulture, aadLoginUri, tenantId);
    var clientId = ConfigurationManager.AppSettings["ClientId"];
    var clientSecret = ConfigurationManager.AppSettings["ClientSecret"];

    var authContext = new AuthenticationContext(authority);
    ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
    AuthenticationResult authResult = authContext.AcquireToken(clientId, clientCredential);

如何為應用程序添加角色分配?
(而不是用戶)

我嘗試使用“其他應用程序的權限”部分,但無法將應用程序添加到自身。 為了查看這是否可以解決另一個應用程序的問題,我繼續創建一個,並能夠添加應用程序並將委托權限設置為“訪問[應用程序名稱]”。 但與以前一樣,這僅適用於訪問應用程序不需要用戶分配的情況。 之后AcquireToken()拋出相同的異常。

看起來這個問題可以通過將我們的API與Angular應用程序分離來解決 ,將API作為API應用程序(帶有網關)托管,但目前這不是一個選項。 此外, 本文還說這個新的Auth功能“ 替換了大多數應用程序的App Service網關 ”, 這篇博文在11月宣布該功能說“ 我們建議網絡和移動應用程序使用此功能而不是App Service網關 ”,所以我想知道如果這還沒有進入UI並且可能通過應用程序清單(嘗試,失敗),graph / service-mgmt api,powershell等添加應用程序角色分配。

關鍵是在清單中定義正確的appRoles(使用正確的allowedMemberType)。

在Azure門戶中,配置以下內容:

在需要訪問的資源中,打開清單 (“App Registrations”刀片)。 appRoles數組中,添加兩個角色:

  • allowedMemberType'Application'之一
  • allowedMemberType'User'之一

保存清單。

接下來,在需要訪問資源的客戶端應用程序中:

  • 瀏覽到“ 必需權限 ”並點擊“添加”
  • 搜索您要訪問的資源
  • 在“啟用訪問”部分的“應用程序權限”下,選擇剛剛配置的角色
  • 保存並點擊“授予權限”

要配置用戶權限

  • 瀏覽到“企業應用程序”刀片
  • 選擇“所有應用程序”,然后選擇正確的應用程序
  • 點擊“用戶和群組”
  • 將用戶分配給角色

在“屬性”部分中,保留“需要用戶分配?” 復選框已啟用 這將僅限制對已配置用戶的訪問。

現在,您可以作為用戶和應用程序訪問資源。

如何為應用程序添加角色分配?

1)從應用程序頁面下載清單如下: 在此輸入圖像描述

2)在Manifest中添加角色內容,如下所示。 可以將用戶分配給應用程序作為用戶角色, 組,應用程序也可以作為角色分配給應用程序。

"appRoles": [
{
"allowedMemberTypes": [
    "User"
  ],
  "description": "Admins can manage roles and perform all actions.",
  "displayName": "Global Admin",
  "id": "7c93906c-71fa-4e5b-b1da-21b073d298fd",
  "isEnabled": true,
  "value": "Admin"
}
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM