Общим вариантом использования для WebAPI было бы иметь представления оболочки, отображаемые MVC-контроллерами, которые содержат javascript, который затем попадает в ваш API для доступа к данным.
Но скажем, что у вас есть некоторые дорогостоящие операции API, и вы не хотите, чтобы люди могли удаленно обращаться к этим конечным точкам - вам нужны только ваши просмотры MVC, предоставленные вашим приложением, для доступа к ним. Как вы могли защитить их?
В этом случае Request.IsLocal не работает, потому что javascript вызывает его из браузера клиента на своей машине. Даже если это сработало, вам нужно копать, чтобы получить реальный HttpContext, чтобы найти это свойство, - и это решение не будет работать в самообслуживании WebAPI.
Для конечных точек API, для которых требуется действительный IPrincipal, вы можете защитить их с помощью атрибута [Authorize]. Но как насчет конечных точек API, к которым вы хотите, чтобы ваше приложение было доступно для анонимных пользователей?
Я попробовал решение и опубликую его отдельно как ответ, потому что я не уверен, что это лучший (или даже хороший) подход.