2017-09-25 85 views
0

我正在使用Microsoft Azure。我已經發布了幾個Web API。每個都啓用了身份驗證/授權,Azure Active Directory(AAD)作爲唯一的提供者。我們有一個AAD租戶。Azure AD:限制消費者對特定Web API的訪問

消費者將成爲合作伙伴公司的應用程序。對於每位消費者,我都在AAD中創建了應用程序註冊。使用該應用程序註冊的應用程序ID和密鑰我可以成功獲取令牌並調用Web API(通過Postman進行測試)。

我的問題是每個消費者憑證都可以訪問每個API。我想限制消費者只能訪問特定的API。例如,消費者A可以訪問API P和Q;消費者B可以訪問API Q和R.這裏有一些重疊和一些唯一性。我一直在通過在線文檔。他們對這種服務對服務的情況很少提及。我找不到與我的場景匹配的示例代碼。如何在AAD單租戶中強制消費者進行API映射?

回答

0

在服務到服務的情況下,最簡單的方法是在web api端編寫自己的驗證邏輯。

在web api端獲取訪問令牌後,檢查訪問令牌中的客戶端ID(appid聲明),如果該客戶端不被允許訪問Web API,則拒絕該訪問令牌並返回錯誤響應。

另一種方式是檢查應用程序的角色:

  1. 在您的Web API應用程序

    ,在清單設置應用程序的角色,如:

    "appRoles": [ 
    { 
        "allowedMemberTypes": [ 
        "Application" 
        ], 
        "displayName": "tester", 
        "id": "9f29f99b-5c77-4fba-a310-4a5c0572e8ff", 
        "isEnabled": true, 
        "description": "read client app", 
        "value": "tester" 
    } 
    

    ]

  2. 在您的客戶端應用程序在Azure Portal中註冊,授予Required permissions刀片中的相關應用權限。在添加應用程序權限後,請不要忘記通過點擊Grant Permissions按鈕(使用管理員帳戶登錄)來執行管理員同意。

  3. 在您的web api代碼中,在啓動文件中配置角色聲明類型後,使用IsInRole()或[Authorize]屬性檢查訪問權限。

您可以參考this document,其中解釋並顯示詳細步驟。請參閱Configuring client application to request application roles of resource API部分。