我的 Azure AD 租户需要多少应用程序注册

How many app registrations do I need in my Azure AD tenant

该图形几乎讲述了这个故事。这都是单租户,fwiw。

我有我的网站 API,它正在通过从同一位置提供的 "swagger" UI(这实际上是一种水疗中心)访问,以及一个 MVC 应用程序,它有一些与 Web 交互的传统 MVC 控制器 API,以及一些直接与 Web 交互的 SPA 体验 api。

据我所知,除了我的 Web API 在我的 AD 租户中注册了一个应用程序(它在其清单中声明了角色以支持 RBAC),我还需要为 swagger UI 单独注册一个应用程序,它被授予访问 Web API.

的权限

我不确定我的 MVC 应用程序是否需要 1 个 AD 租户注册,或 2 个注册(1 个用于 MVC,1 个用于从 MVC 提供的 SPA)

主要问题..

  1. 我的MVC/SPA应该共享同一个AD注册,还是应该分开?

  2. 我的 Web API 注册的清单需要 "oauth2AllowImplicitFlow": true,还是只有 swagger 和 SPA 应用程序注册的清单需要?

  3. 我的 MVC,based on this github sample for SPAs, currently uses this middleware: app.UseWindowsAzureActiveDirectoryBearerAuthentication .. but if my MVC is going to do selective things in it's razor or with it's contoller logic, should I also be using these add'l middlewares UseCookieAuthentication and UseOpenIdConnectAuthentication as shown in this non-SPA web app sample

  1. 您或许可以让它与同一个应用程序一起工作(在服务器端获取访问令牌并将其与呈现的页面一起提供),但是您可能 运行 无法使用的一些东西该令牌以获取令牌以转到下一个应用程序(WebAPI 应用程序)。这确实意味着可能需要额外访问 Azure AD,但我希望 SPA 是它自己的应用程序。
  2. 只有 Swagger 和 SPA 注册需要 "oauth2AllowImplicitFlow": true
  3. 您的 MVC 应用程序应该使用承载身份验证中间件 - 它应该使用普通的 OpenIdConnect 中间件。此设置中唯一应该使用不记名身份验证的应用是您的 WebAPI。

关于从 MVC 应用程序提供的 SPA 的一些附加说明。当您调用 WebAPI 应用程序时,您需要确保调用中包含不记名身份验证令牌,您可以使用 ADAL-JS 之类的东西获得该令牌。 If/when 您正在调用 MVC 应用程序,不会使用不记名令牌,您通常是 cookie+openid 身份验证。