2

我有一個ASP.NET Web Forms網站,用戶將使用Azure Active Directory登錄。作爲客戶端,它調用Asp.Net Core Web Api站點,它將根據客戶角色返回一些信息。 該方法類似於https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore樣本。客戶端和服務Web應用程序可以共享相同的Azure Active Directory應用程序嗎?

示例中的每個應用程序都有它自己的Azure Active Directory應用程序。我的應用程序有很多應用程序角色,並且在兩個應用程序中維護它們可能會令人討厭且容易出錯。我希望客戶端和服務使用相同的AAD應用程序,以避免在2個AAD應用程序中保持相同的角色。

我還沒有看到這樣的架構的例子,是這樣的方法有什麼問題

我試圖實現它,並收到「有希望」的錯誤,即「場景支持」。

AADSTS90009:應用程序正在爲自己請求令牌。僅當使用基於GUID 的應用程序標識符指定資源時,才支持此 方案。

不幸的是,我不明白如何指定資源「使用基於GUID的應用程序標識符」。在請求我已經使用GUID 資源= HTTPS%3A%2F%2FMyDomain.onmicrosoft.com%2Fe0a25761-XXXX-XXXX-XXXX-2aefc7e3134d

建議改變一些GUID在MS論壇線程https://social.msdn.microsoft.com/Forums/azure/en-US/3de0c14d-808f-47c3-bdd6-c29758045de9/azure-ad-authentication-issue-aadsts90009?forum=WindowsAzureAD#cf3986f5-3422-44d1-bcb7-3a4201f68fa2(I要求澄清那裏)也不清楚。

所以我的問題是:我可以在客戶端和服務之間共享相同的AAD應用程序嗎?如果是的話,怎麼做

回答

0

我試圖爲根據https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-manifest支持的AAD應用程序(identifierURIs [])添加新的應用程序ID URI。 Manifest允許指定多個identifierURIs,但門戶(包括新的和經典的)僅顯示第一個URI。新門戶突出顯示應用程序ID URI輸入框更改並提示保存(有效地刪除第二個URI)。

但是我意識到我不需要兩個AAD應用程序都有角色。我可以有2個獨立的AAD應用程序,並且只在其中一個應用程序中保留角色。網站客戶端將認證用戶,但不檢查角色本身。相反,它會調用Web API網站,該網站應該有AAD應用程序,並聲明所有應用程序角色並將其分配給用戶/用戶組。 Web API可以根據客戶的請求爲客戶提供角色/權限。

2

根據我的測試,正常的Azure AD租戶不支持混合客戶端和服務器應用程序。

這是我想給大家參考:

1 .Grant權限的應用程序本身通過修改清單如下圖所示:

"requiredResourceAccess": [ 
{ 
    "resourceAppId": "{AppID}", 
    "resourceAccess": [ 
    { 
     "id": "{customOauth2PermissionsId}", 
     "type": "Scope" 
    } 
    ] 
}, 
{ 
    "resourceAppId": "00000002-0000-0000-c000-000000000000", 
    "resourceAccess": [ 
    { 
     "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6", 
     "type": "Scope" 
    } 
    ] 
} 
], 

2。然後我們可以使用的OAuth2代碼獲得令牌補助流
https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id={appId}&redirect_uri={redirectURL}&resource={appId}

POST:https://login.microsoftonline.com/common/oauth2/token 

enter image description here

但是,我無法在使用access_token時找到自定義特定權限。如果您希望Azure AD普通租戶支持此場景,則可以提交here的反饋。

+0

什麼是'customOauth2PermissionsId',@ fei-xue? –

相關問題