如何使用ADAL js前端管理多个租户,ClientID和端点?

时间:2019-04-02 06:12:56

标签: angularjs azure azure-active-directory adal adal.js

背景:

  • 我们使用每个应用程序一个租户模型
  • 所有租户都运行相同的前端和后端代码,这些代码分别针对每个租户在不同子域下部署和托管
  • 我们为每个租户提供单独的AzureAD应用程序,从而为每个租户提供不同的ClientID。

问题:

根据在https://github.com/AzureAD/azure-activedirectory-library-for-js/wiki/Config-authentication-context上找到的ADAL js Wiki,我们的前端应用程序在初始化ADAL时必须指定ClientID和后端API端点。

由于每个租户都有自己的ClientID,我们最终将所有可能的ClientID和Endpoint添加到我们的代码中,并在运行时根据当前URL确定值。这显然不能很好地扩展,因为它需要为每个新租户更改代码。我们正在考虑将这项工作移至CI / CD流程,但试图了解是否有更好的解决方案。

是否有更好的方法通过ADAL js管理多个单租户应用?

1 个答案:

答案 0 :(得分:0)

由于应用程序的每个实例都是单独注册的(因此具有自己的ClientId),所以ADAL.js不能为您提供更好的解决方案。

您可以使用Angular Environment的e。 G。

environment.tenant1.ts
enviornment.tenant2.ts

并使用ng build --prod ---configuration=tenant1为每个租户创建一个构建工件。我不喜欢这种解决方案,因为您有多个构建工件。

或者您公开一个中间件/ REST API,该API通过URL返回特定客户端的配置。这将是您的客户需要知道的唯一端点。但是,您必须确保中间件始终处于运行状态(单点故障)。