使用 MSAL 和 Angular 为什么需要两个单独的 AAD 应用程序注册?

Mar*_*llo 0 .net azure-active-directory azure-ad-msal angular

https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-dotnetcore-webapi-roles-groups/tree/master/chapter1

我已经能够成功地使用这个示例代码来玩 AAD 应用程序注册。我很困惑为什么我们需要两个单独的应用程序注册,一个用于前端,另一个用于 API。我可以将其设置为使用一个应用程序吗?如果是这样,此设置是否有缺点?

谢谢

der*_*sen 5

如果您愿意,您可以这样做,但通常不建议这样做。原因有很多,但这里有一个简单的例子:在向应用程序授予权限时(通过应用程序权限或委派权限),您应该遵循“最小权限原则”,即为应用程序授予足够的权限,而不是更多的。客户端应用程序和 Web API 很可能需要不同的范围/权限来完成他们需要做的工作,但使用相同的应用程序注册意味着您将无法分离每个所需的范围。

类似的情况是您比客户端应用程序更关心 Web API 的保护。假设您为 Web API 使用证书,但只有客户端机密才能用于您的客户端应用程序。同样,在这种情况下,拥有单独的应用程序注册将允许您根据其安全需求自定义每个应用程序。

最后但并非最不重要的一点是,假设您有多个客户端应用程序(SPA、移动设备、桌面应用程序等)和一个 Web API,所有这些都在同一个应用程序注册中。对于您的业务逻辑,也许您需要能够区分请求来自哪个客户端应用程序。尽管有多种方法可以通过单个应用程序注册来实现这一点,但单独注册也更加轻松。