Получение бесконечного цикла перенаправления в службе приложений Azure с помощью ADB2C и общего файла cookie для проверки подлинности - PullRequest
0 голосов
/ 14 февраля 2019

tl; dnr По сути, мое приложение работало нормально до реализации общего cookie.Теперь у меня есть бесконечный цикл перенаправления входа в систему.Я часами копался в настройках файлов cookie, проводил локальное тестирование, развертывание в Azure и отказы.Как я могу принудительно установить HTTPS в службе приложений Azure?

Как и многие другие, я столкнулся с проблемой бесконечного цикла входа в систему.Мое приложение работало нормально с ASP.net Core 2.2 (в Dot Net 4.7.1), а затем я перешел к «общему файлу Auth».В разработке все отлично работает с localhost, но как только я публикуюсь в службе приложений Azure (домен .azurewebsites.net), я получаю бесконечный цикл перенаправления входа в систему.

Для начала, используя AzureKey Vault, я настроил службы «Защита данных», следуя этим инструкциям ссылка .и установите мой общий cookie-файл как таковой для всех приложений:

services.AddDataProtection()
    .SetApplicationName("custom-app")
    .PersistKeysToAzureBlobStorage(cloudStorageAccount, azureBlobKeyStoragePath)
    .ProtectKeysWithAzureKeyVault(keyVault, clientId, clientSecret);

var authCookie = new CookieBuilder() {
    Name = ".AspNetCore.Auth.SharedCookie",
    Path = "/",
    Domain = ".mycustomdomain.com",
    SecurePolicy = CookieSecurePolicy.SameAsRequest, // tried None as well without luck
    SameSite = SameSiteMode.None, // I've tried Lax without any changes
    HttpOnly = false,
    IsEssential = true //changing this makes no difference
};
services
    .AddAuthentication(sharedOptions => {
        sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        sharedOptions.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
        sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    })
    .AddAzureAdB2C(options => configuration.Bind("AzureAdB2C", options))
    .AddCookie(options => { options.Cookie = authCookie; });
...
var corsOrigins = new[] {
    "http://localhost",
    "https://localhost",
    "http://*.mycustomdomain.com",
    "https://*.mycustomdomain.com",
    "http://*.azurewebsites.net",
    "https://*.azurewebsites.net",
    "https://*.onmicrosoft.com",
    "https://login.microsoftonline.com"
};

app.UseCors(cors => {
    cors.WithOrigins(corsOrigins)
    .SetIsOriginAllowedToAllowWildcardSubdomains()
    .AllowCredentials();
    cors.AllowAnyHeader();
    cors.AllowAnyMethod();
}); 

За исключением настройки служб «Защита данных» и дополнительных доменов CORS, в код приложения не было внесено никаких других изменений.

Мое приложение настроено для HTTPS ... https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.2

...
app.UseHsts();
...
app.UseHttpsRedirection();
...

И я также проверил, что моя служба приложений Azure настроена для доступа HTTPS в параметрах "Пользовательские домены" и "Настройки SSL".

На основании всех постов, с которыми я столкнулся, я понимаю, что основная проблема, возможно, связана с перенаправлением HTTPS с конечных точек Azure ADB2C, а общий файл cookie не сохраняется / читается должным образом.Обратный прокси-сервер отбрасывает HTTPS и вызывает только HTTP.Я просто не могу понять, какая комбинация должна работать.Я использую хост OutofProcess, и я вижу, что внутренние вызовы HTTP.Как я могу сделать так, чтобы они были HTTPS?

Стороннее примечание: я также пытался изменить домены cookie Correlation или Nonce, но это приводило к ошибкам Correlation.

TIA, любое указание направления было быпризнателен.

Краткий список сообщений, на которые я ссылался:

1 Ответ

0 голосов
/ 18 февраля 2019

Через некоторое время после изучения моей конфигурации и создания тестового приложения с нуля ... я наткнулся на следующий пост:

Файл cookie идентификации общего ядра ASP.NET для веб-приложений Azure в домене по умолчанию(* .azurewebsites.net)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...