Регистрация приложения Azure AD ограничивает URI перенаправления до 256

Можно ли использовать один URI перенаправления для нескольких клиентов и нескольких веб-приложений с помощью одной регистрации приложения Azure AD?

Я достиг предела в 256 URI в моей многопользовательской регистрации приложения Azure, где каждый зарегистрированный клиент имеет свой собственный набор URI перенаправления.

URI перенаправления следуют этому шаблону

После прочтения Используйте параметр состояния. У меня возникла идея создать новое веб-приложение, которое только аутентифицирует, а затем перенаправляет пользователя на первоначально запрошенный URI. Но невозможно настроить OpenId CallbackPath для нового приложения аутентификации / авторизации / перенаправления.

Как мне решить эту проблему?

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. Создание регистрации приложения для каждого веб-приложения по-прежнему ограничивает меня 256 клиентами, что слишком мало.
  3. Создание новых регистраций приложений для каждого клиента слишком сложно поддерживать и настраивать.
  4. Я не хочу регистрировать URI перенаправления в субъекте службы клиентов, я должен иметь возможность добавлять и удалять URI без необходимости предпринимать какие-либо действия со стороны клиента.

person MatiasK    schedule 11.11.2019    source источник
comment
Привет, MatiasK, я нахожусь в очень похожей ситуации, у тебя было какое-то решение этой проблемы?   -  person Ovenkoek    schedule 07.04.2021
comment
@Ovenkoek В итоге я сделал веб-приложения многопользовательскими, и поэтому URI перенаправления были сокращены до одного для каждого веб-приложения, а не для нескольких клиентов и веб-приложений. Я использую утверждение идентификатора клиента, чтобы идентифицировать клиента после его аутентификации.   -  person MatiasK    schedule 09.04.2021


Ответы (2)


Это ограничение протокола, а не проблема Azure AD, проверьте: https://stackoverflow.com/a/812962/1384539

Чтобы решить эту проблему, вам нужно перенаправить на промежуточную страницу, которая будет обрабатывать нужное место для перенаправления вашего пользователя. Насколько я знаю, другого выхода нет.

person Thiago Custodio    schedule 11.11.2019
comment
В Azure я могу определить 256 различных Redirect URI для каждой регистрации приложения. И я указываю только один из этих URI в качестве пути обратного вызова OpenId. Поэтому я не думаю, что это ограничение браузера / веб-сервера. Я хочу, чтобы OpenIdConnectOptions.Callbackpath принимал URI, указывающий на веб-приложение, общее для всех клиентов. Это должно означать, что мне нужен только один Redirect URI для всех клиентов и их веб-приложений. - person MatiasK; 12.11.2019

Произошла ли регистрация multi-tenant, если вы нашли переключатель Supported account types на Authentication панели регистрации вашего приложения на портале Azure и установили для него значение 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

person Nan Yu    schedule 12.11.2019
comment
Да, регистрация является мультитенантной и в настоящее время обслуживает несколько веб-приложений и несколько клиентов-клиентов. Проблема в том, что я могу определить только 265 URL-адресов перенаправления, и мне нужно 7 URL-адресов для каждого потребляющего клиента (протокол: //a.com/consumer [1..x] / webapp [1..7] / signin-oidc). Я ограничен 36 жильцами-потребителями. - person MatiasK; 13.11.2019
comment
Это предел AAD, вы можете рассмотреть возможность добавления еще одного AAD. - person Nan Yu; 14.11.2019