Azure Active Directory | 多租户应用程序

8
Azure AD 多租户应用中是否有限制某些租户的方式?
也许我对整个事情有所误解,但我意识到在经过同意后,另一个租户的用户可以登录我的应用程序,我找不到一种方法将此登录限制在我信任的租户组中。
2个回答

6

我们目前没有一个应用程序配置属性,能够映射到多租户应用程序的租户允许列表。

你可以在你的应用程序中构建此功能 - auth/JWT令牌包含租户ID(tid)作为声明。你可以仅授权已知允许列表中的租户来访问你的应用程序。

如果您希望通过应用程序配置页面(如Azure管理门户中的页面)来配置此功能,请告诉我们?另外了解您的场景将非常有帮助。

希望这有所帮助。


1
嗨,丹,感谢你的回答。我可以在我的代码上执行该验证,但用户仍然可以在我的租户中注册我的应用程序的用户。我测试过了。有没有办法避免用户在我的代码上同意?我正在将此示例作为参考:https://github.com/AzureADSamples/WebApp-MultiTenant-OpenIdConnect-DotNet。在应用程序配置页面上添加选项会很好。 - Rodrigo Longo
没错。如果没有新功能,我们无法防止用户同意登录到您的多租户应用程序。控制访问将需要作为授权用户在您的应用程序中的一部分来进行。我会确保在这里添加一个功能请求,Rodrigo。感谢您的反馈。 - Dan Kershaw - MSFT
@DanKershaw-MSFT 你好,这个功能已经实现了吗?或者有关于它的计划吗? - Prokurors

3
虽然Azure AD目前没有此功能,但您可以在其中添加Auth0以实现此场景。 Auth0支持将多租户Azure AD应用程序作为连接连接到您的应用程序,并且使用规则引擎,您可以编写规则来基于Azure AD租户限制对特定应用程序的访问。
以下是这样一个规则的示例(该规则在用户通过Azure AD进行身份验证并在用户访问您的应用程序之前在Auth0身份验证管道中运行):
function (user, context, callback) {
     if(context.clientName !== 'NameOfTheAppWithWhiteList'){

      var whitelist = [ 'tenantId1', 'tenantId2' ]; //authorized Azure AD tenants.
      var userHasAccess = whitelist.some(
        function (tenantId) {
          return tenantId === user.tenantid;
        });

      if (!userHasAccess) {
        return callback(new UnauthorizedError('Access denied.'));
      }
    }

    callback(null, user, context);
}

免责声明: 我为Auth0工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接