2017-06-21 60 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

相关问题