#iis
Вопрос:
Поэтому я работаю над проектом, в котором у меня есть веб-сайт, который вызывает API (оба размещены в IIS), на данный момент ничего особенного. Веб-сайт настроен с проверкой подлинности Windows, разрешающей доступ пользователям в группе. API настроен с проверкой подлинности Windows, разрешающей доступ только к пользователю, определенному как идентификатор в пуле приложений веб-сайта.
Я ожидаю, что любой пользователь в группе, вызывающей веб-сайт, сможет просматривать данные на веб-сайте, и они не смогут напрямую вызывать API.
Однако я получаю то, что при вызове страницы веб-сайта веб-сайт получает ошибку 401 при вызове API.
Я что-то упустил в конфигурации ?
Я надеюсь, что вам это ясно.
Спасибо вам за вашу предстоящую помощь ! 🙂
Элиан
Комментарии:
1. Можете ли вы опубликовать подробную информацию об ошибке 401? Или вы можете использовать отслеживание неудачных запросов, чтобы получить дополнительную информацию.
Ответ №1:
Если вы используете HTTP в качестве транспорта между вашим веб-сайтом и вашим API, вы не можете ограничить доступ к API от Postman или любого другого инструмента, включая простые запросы на получение в браузере. Любой технически достаточно опытный пользователь может открыть вкладку «Сеть» в отладчике Chrome и просмотреть все запросы, отправленные вашим сайтом в API.
Итак, я думаю, что вам следует выполнить запрос API на стороне сервера на этапе рендеринга HTML-страницы.
КАК ЕСТЬ: (браузер или любой клиент) -gt; Веб-сайт И (браузер или любой клиент) -gt;gt; API
ДОЛЖНО БЫТЬ: (браузер или любой клиент) -gt; Веб-сайт -gt;gt; API
Затем вы можете восстановить доступ к API, например, разрешить запрос только с локального хоста
Комментарии:
1. Спасибо за ваш ответ ! Запросы API фактически уже выполняются на стороне сервера. Вам не кажется, что вместо того, чтобы блокировать пользователей в API, я мог бы попытаться заблокировать любой запрос, который не поступает с веб-сайта ? Возможно ли это в IIS ? PS : Я отредактировал свой пост, теперь, возможно, будет понятнее.
2. Итак, тогда вы можете 1. просто отключить аутентификацию на стороне API (ее можно вызвать только с локального хоста, который уже безопасен). 2. извлеките имя пользователя или другие данные из данных аутентификации Windows на стороне веб-сайта и отправьте их в API в виде простой строки или около того
3. Т. е. канал «пользователь -gt; веб-сайт» небезопасен и нуждается в аутентификации, канал «веб-сайт — gt; gt; API» безопасен, если API можно вызвать только с локального хоста и не требуется аутентификация