Я пытаюсь понять, как реализовать службу Windows (Headless), которую можно настроить для взаимодействия с нашим WebApi в мультитенантном сценарии. Ближайший пример, который я смог найти, был опубликован здесь Вызов веб-API в демоне или длинном -запуск. Проблема с этим образцом заключается в том, что он не показывает, как вы будете действовать в многопользовательском сценарии. Если вы используете один и тот же AppKey для каждого клиента, будет ли возможно выдать себя за другого клиента, если кто-то решит искать в приложении ClientID и AppKey? Похоже, что один из способов обойти это - создать новый AppKey для каждого клиента, который присоединяется к нашему сервису. Этот ключ приложения необходимо предоставить службе Windows в качестве параметра конфигурации при установке службы заказчиком. Это правильный подход? Это не кажется правильным направлением, поскольку на портале AAD не будет очевидно, какой ключ AppKey связан с каким клиентом. Похоже, вам придется справиться с этим самостоятельно. Я знаю, что вы должны передать идентификатор клиента как часть полномочий, но эти идентификаторы не похожи на AppKey или пароли. Какой правильный подход для этого сценария?
Я также смотрю на этот образец Создание мультитенантного веб-API, защищенного Azure AD. К сожалению, этот образец является приложением для магазина Windows. У него есть пользовательский интерфейс, поэтому он может выполнять типичный танец согласия с AAD. Очевидно, что служба Windows не может использовать этот подход. Я могу самостоятельно разместить веб-приложение в службе Windows, заставить пользователя пройти процесс согласия хотя бы один раз, поэтому токен будет кеширован, как в этом примере. Однако что мне использовать в качестве RedirectUrl? Это не приложение для магазина Windows, поэтому я не могу использовать
WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
Мне не ясно, поддерживается ли этот сценарий.