IIS : Проблема проверки подлинности Windows : веб-сайт, вызывающий API

#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 можно вызвать только с локального хоста и не требуется аутентификация