您可以爲Azure AD中API清單中的用戶和應用程序定義「角色」。
如果您想知道應用程序角色實際上是應用程序權限。
所以,你可以在你的API清單是這樣的(其他屬性爲清楚起見移除):
{
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"displayName": "Read all things",
"id": "32028ccd-3212-4f39-3212-beabd6787d81",
"isEnabled": true,
"description": "Allow the application to read all things as itself.",
"value": "Things.Read.All"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Read things",
"id": "ef8d02ff-eee1-6745-9387-96587c358783",
"isEnabled": true,
"description": "Allow the user to read things.",
"value": "Things.Read"
}
]
}
所以我們定義一個角色,只允許應用程序作爲其成員。這是一個應用程序許可。另一個是可以提供給用戶和組的角色。
然後您可以爲用戶提供Read things角色,並且守護進程控制檯應用程序讀取所有事物應用程序權限。並且你實現了兩種場景:)
通過轉到企業應用程序 - >您的API->用戶和組 - >添加用戶,您可以將角色添加到用戶/組。選擇你想要的用戶/組,然後爲他們選擇一個角色(如果你只有一個,它將被預選)。
您通過尋找其他應用程序的App註冊 - >必需permissions->添加 - >找到你的API - >選擇 - >檢查您先前從列表中定義的應用程序的權限添加應用程序的權限。然後,您可以按授予權限按鈕來授予應用程序角色。
你再在角色的價值索賠這兩種情況下。
所以角色要求看起來像這樣在第一種方案:
"roles": [
"Things.Read"
],
像這樣在第二個場景:
"roles": [
"Things.Read.All"
],
這將在方案1中工作,但如何做這工作客戶端憑據流?假設我有一個客戶端應用程序應該具有「讀取」訪問權限,另一個客戶端需要「寫入」訪問權限,我在哪裏指定映射?我們可以在Azure門戶中定義此訪問嗎?或者客戶端是否可以請求令牌請求中的讀/寫權限? – Anoop
將應用程序權限添加到Azure AD中的控制檯應用程序並授予該權限後,使用客戶端憑據獲取的令牌應該包括角色。 – juunas
只是爲了確保這個工作,我記得我測試過這個。在這兩個標記中,您將獲得一個角色數組,其中包含角色中定義的值。所以在這種情況下要麼Things.Read要麼是Things.Read.All。 :) – juunas