Azure AD应用程序注册将重定向URI限制为256

时间:2019-11-11 15:39:18

标签: azure asp.net-core multi-tenant azure-authentication

是否可以使用单个Azure AD应用程序注册将单个重定向URI用于多个租户和多个Web应用程序?

在我的Azure多租户应用程序注册中,我已达到256个URI的限制,其中每个注册的租户都有自己的一组重定向URI。

重定向URI遵循此模式

阅读Use a state parameter之后,我想到了创建一个新的Web应用程序的方法,该应用程序仅进行身份验证,然后将用户重定向到最初请求的URI。但是无法将OpenId CallbackPath配置为新的auth / authorize / redirect应用。

我应该如何解决?

ASP.NET Core
authenticationBuilder.Services.AddSingleton<IConfigureOptions<OpenIdConnectOptions>, ConfigureAzureOptions>();
authenticationBuilder.AddOpenIdConnect();

private class ConfigureAzureOptions : IConfigureNamedOptions<OpenIdConnectOptions>
{
   public void Configure( string name, OpenIdConnectOptions options )
   {
      options.ClientId     = "555-xxx";
      options.Authority    = "https://login.microsoftonline.com/common";
      options.CallbackPath = "https://mydomain/myauth-redir-app/signin-iodc" // this is not allowed
      options.Events       = new OpenIdConnectEvents
      {
         OnRedirectToIdentityProvider = ctx => 
         {
             // remember the URL the user requested, to be picked upp later after AAD auth
             ctx.ProtocolMessage.SetParameter("state", "set_org_url"); 
         }
         OnTokenValidated = ctx =>
         {
            // this code should run in myauth-redir-app and pick up the state 
            // and redirect the user to the originally requested URL
            var stateValue = ctx.ProtocolMessage.GetParameter("state");
         }
      }
   }
}

拒绝的解决方案

  1. 不再支持在URI中使用通配符
  2. 为每个Web应用程序创建应用程序注册仍然将我限制为256个租户,这太少了。
  3. 为每个租户创建新的应用程序注册非常麻烦,无法维护和配置。
  4. 我不想在租户服务主体中注册重定向URI,我必须能够添加和删除URI,而无需客户采取任何行动。

2 个答案:

答案 0 :(得分:0)

这是协议限制,不是Azure AD问题,请检查:https://stackoverflow.com/a/812962/1384539

要解决此问题,您需要重定向到一个中间页面,该页面将处理正确的位置来重定向用户。据我所知,没有其他办法了。

答案 1 :(得分:0)

是通过在Azure门户中的应用程序注册的multi-tenant窗格上找到Supported account types开关并将其设置为Authentication来完成Accounts in any organizational directory的注册吗?

对于多租户应用程序,您只需要一个重定向url(原始的)。对于多租户应用程序,该应用程序的初始注册存在于开发人员使用的Azure AD租户中。当来自其他租户的用户首次登录该应用程序时,Azure AD要求他们同意该应用程序请求的权限。如果他们同意,则会在用户的租户中创建称为服务主体的应用程序表示,然后可以继续登录。还会在目录中创建一个委派,记录用户对应用程序的同意。

请参阅文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#update-registration-to-be-multi-tenant