2012-01-30 5 views
0

У нас есть 2 открытых интернет-сервера в нашей компании. (serverA.mycompany.com & serverB.myCompany.com)asp.net webservices аутентификация/авторизация

Мы размещаем веб-службу asp.net (.asmx) на одном из этих серверов, который подвергается воздействию Интернета. Нам нужно сделать аутентификацию/авторизацию (без использования паролей/windows auth) и разрешить только запросы, которые поступают из «* .myCompany.com»

К сожалению, IP-адреса компьютеров не являются статическими. Они продолжают меняться один раз через 6 месяцев или около того. Таким образом, доступ на основе IP не является для нас решением.

Пожалуйста, помогите мне разрешить только запросы, которые приходят из «* .myCompany.com»

ответ

1

Вы не можете знать, кто клиент только на основе его имени хоста. Вам необходимо, чтобы клиент аутентифицировался (через SSL, для обеспечения безопасности) или, по крайней мере, подписал, что их отправляет.

Если вы диковинки о «подписании», я описал это на простом примере в ответ здесь: C# app should send some data to php website but should respect auth policies

Если вы можете установить сертификат SSL на стороне ASMX, даже жесткое кодирование что-то «секрет «(например, пароль, сохраненный в безопасности и конфиденциальность между двумя приложениями) будет делать трюк.

В противном случае, возможно, вы можете получить запрос asmx DNS для получения IP-адреса клиента, а затем сравнить с входящим запросом. Это означает, что вы не можете ограничивать IP на уровне IIS - вы должны проверить в asmx. Вы можете сделать это один раз, по первому запросу, а затем сохранить в памяти, пока он не перестанет работать (или пока он не станет другим), а затем снова запросите DNS. Возможно, даже держите этот IP-адрес более постоянным (например, базу данных), поскольку IP-адрес не будет часто меняться.

Смежные вопросы