У меня есть приложение, которое проходит проверку подлинности с помощью Azure Active Directory с использованием OpenIdConnect.Все работает нормально, за исключением случаев, когда я делаю ссылку на свой сайт из приложения Office (Excel / Word).Из этих приложений я получаю «Исключение: корреляция не удалась».
Из моего исследования кажется, что офис сначала выполняет перенаправление 302, а затем открывает эту страницу, а не исходную ссылку.
См .: https://github.com/aspnet/Security/issues/1252
После рекомендации о том, как справиться с этим сценарием.Я не хочу вносить много изменений в поток аутентификации и вносить ошибки.
Я пытался перенаправить на другую страницу на моем сайте, когда обнаружен пользовательский агент Excel.Я думал, что тогда будет установлен правильный файл cookie, и я мог бы перенаправить оттуда на запрошенную страницу, которая затем инициировала бы авторизацию.Не повезло, хотя
OnRedirectToIdentityProvider = context =>
{
if (context.Request.Headers["User-Agent"].ToString().Contains("Microsoft Office Excel"))
{
string redirect = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + "/Home/Office" + "?url=" + context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Path;
context.Response.Clear();
context.Response.Redirect(redirect);
context.HandleResponse();
return Task.CompletedTask;
}
}