2017-06-21 103 views
0

enter image description here我需要在Azure AD租戶中註冊多少個應用程序

圖形幾乎可以說明故事。這是所有單租戶,fwiw。

我有我的Web API,通過從同一位置提供的「swagger」UI(這實際上是一種spa)訪問,以及一個MVC應用程序,它具有一些傳統的MVC控制器交互使用Web API,以及一些直接與Web API交互的SPA體驗。

從我讀到的內容來看,除了我的Web API在我的AD租戶中有一個應用程序註冊(它具有在清單中聲明的​​角色以支持RBAC)之外,我還需要有一個單獨的應用程序註冊爲swagger UI授予訪問Web API的權限。

我不能確定我的MVC應用程序需要1名AD租戶登記,或者註冊2(1 MVC,1爲SPA從MVC擔任了)

的主要問題..

  1. 我的MVC/SPA應該共享相同的AD註冊,還是應該將它們分開?

  2. 我的Web API註冊清單是否需要"oauth2AllowImplicitFlow": true,或者只有swagger和SPA應用程序註冊的清單需要這樣?

  3. 我的MVC,based on this github sample for SPAs,目前使用這個中間件:app.UseWindowsAzureActiveDirectoryBearerAuthentication ..但如果我的MVC是要幹什麼事情的選擇性,在它的剃刀或與它的位指示的邏輯,我應該也可以使用這些用戶互動,增加中間件UseCookieAuthenticationUseOpenIdConnectAuthenticationas shown in this non-SPA web app sample

回答

1
  1. 你或許可以把它用相同的應用程序中工作(獲得訪問令牌服務器端,並與渲染頁面提供),但你可能會遇到一些事情,你不能使用該令牌獲取令牌以轉到下一個應用(WebAPI之一)。這確實意味着可能會有額外的Azure AD訪問,但我會將SPA作爲自己的應用程序。
  2. 只有Swagger和SPA註冊需要"oauth2AllowImplicitFlow": true
  3. 您的MVC應用程序應該而不是使用持證人認證中間件 - 它應該使用正常的OpenIdConnect中間件。這個設置中唯一應該使用承載認證的應用程序就是您的WebAPI應用程序。

一些額外的注意事項:從MVC應用程序服務的SPA。當您撥打WebAPI應用程序時,您需要確保電話中包含持證人身份驗證令牌,並使用ADAL-JS之類的功能。如果/當您打電話給MVC應用程序時,不會使用不記名令牌,那麼您通常會使用cookie + openid身份驗證。

+0

好的,這爲我清除了一些東西。這些樣本顯示了一件或另一件事......但我還沒有找到一個包裝我試圖實現的全貌。我現在會投票給你,並接受我得到它的所有工作;-) – bkwdesign

+0

喬納森,fwiw,[這是我失蹤](https://stackoverflow.com/a/44835112/1520850)讓我的SPA對我的啓用CORS的Web API進行跨域調用 – bkwdesign

相關問題