Використання Microsoft Entra (Azure AD) з .NET Framework Self-Hosted OWIN WebAPI

Використання Microsoft Entra (Azure AD) з .NET Framework Self-Hosted OWIN WebAPI

3 Березня 2024 в 19:36 32

У цій статті ми розглянемо процес використання Microsoft Entra (Azure AD) з .NET Framework Self-Hosted OWIN WebAPI. Розглянемо проблему, яка виникає при спробі додати аутентифікацію Microsoft Entra ID до Self-Hosted OWIN WebAPI та знайдемо рішення для цього.

Виникла ситуація, коли автор спробував додати аутентифікацію Microsoft Entra ID до свого Self-Hosted OWIN WebAPI. Все працювало без проблем до тих пір, поки не з’явилася недокументована помилка, про яку немає ніяких відомостей в Google Search. Ця помилка виникає в момент виклику методу DefineConfiguration(IConfigurationBuilder builder) в класі OwinTokenAcquirerFactory, де спроба отримати доступ до HttpContext.Current.Request.PhysicalApplicationPath призводить до виникнення виключення System.NullReference.

Найбільш важливим моментом в цьому випадку є те, що код стартового класу викликається під час ініціалізації служби, тому HttpContext у цей момент недоступний. Це призводить до плутанини, оскільки в стандартній документації нічого не сказано про те, що можна використовувати HttpContext в методах запуску OWIN.

Один із можливих шляхів вирішення цієї проблеми полягає в тому, щоб використовувати альтернативні способи отримання інформації, яку спробуємо розглянути далі. Варто зазначити, що спроби створити макет HttpContext приводять до подальших помилок, оскільки немає доступу до Request.PhysicalApplicationPath.

Під час вивчення цього питання важливо звернути увагу на відсутність документації та зазначити, що проблема може бути викликана різними факторами, включаючи версії використовуваних бібліотек та середовище виконання.

Загалом, ця проблема підкреслює важливість ретельного вивчення документації та пошуку альтернативних шляхів вирішення проблем, коли виникають недокументовані або неочікувані помилки у процесі розробки програмного забезпечення.