Как обезопасить веб-сервис в .net? - PullRequest
13 голосов
/ 06 мая 2009

Я написал простой веб-сервис .NET, который я буду размещать на другом сервере, возможно, на другом континенте. Я действительно не знаю. Теперь у меня был только его URL, и я попытался использовать метод веб-запроса и веб-ответа для доступа к этому веб-сервису через HTTP POST. Теперь я хочу знать, есть ли способ защитить доступ к веб-сервису, чтобы никто не мог его использовать?

например:

http://example.com/Verify/Verification.asmx/Verify?AccountNumber=3223&ProductName=876

Теперь это все параметры, необходимые для вызова этого веб-сервиса. Как будто теперь, любой может использовать это. Так, как я могу сделать это безопасным? Хотя я планирую получить SSL, и все это происходит с сервера на сервер, а не с клиента на сервер?

Ответы [ 5 ]

9 голосов
/ 06 мая 2009

Вы можете передать служебный ключ (во многом аналогичный Amazon WS) в заголовке авторизации веб-запроса, который можно зашифровать с помощью выбранного вами алгоритма, который затем дешифруется в конце службы и продолжается только при выполнении, если ключевые совпадения

См. Раздел 14.8 в следующем URL-адресе

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

1 голос
/ 06 мая 2009

Обычно то, что вы использовали для защиты веб-сервисов .NET до WCF, было Расширения веб-сервисов (WSE) от Microsoft , теперь в версии 3.0 Я успешно использовал его в коммерчески доступном продукте, и он довольно хорош, поскольку основан на стандартах W3C ws- *. Можно успешно взаимодействовать с этим из клиентов .NET (очевидно), но также и из клиентов Java, если вы используете Apache Axis. Скачать по адресу:

http://www.microsoft.com/downloads/details.aspx?FamilyID=018a09fd-3a74-43c5-8ec1-8d789091255d&displaylang=en

1 голос
/ 06 мая 2009

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

Если бы мне пришлось это сделать, я бы использовал WCF и дал бы себе несколько вариантов. Если бы я не мог использовать WCF, я бы создал собственный заголовок HTTP, чтобы передать имя пользователя и пароль (через SSL!), И аутентифицировать их на сервере. С другой стороны, я бы использовал сертификаты на клиенте и потребовал бы их отправки на сервер. IIS может даже превратить клиентские сертификаты в удостоверения Windows на сервере.

0 голосов
/ 08 апреля 2013

Вы также можете создать токен и передать этот токенид в качестве параметра каждому веб-методу. Вы можете сохранить токен в хеш-таблице и удалить из хеш-таблицы, как только сеанс будет прекращен.

Токен должен быть сгенерирован при успешном входе в систему. Для создания идентификатора токена я рекомендую использовать RNGCryptoServiceProvider.

0 голосов
/ 06 мая 2009

Мы делаем немало веб-сервисов, и для их защиты мы просто добавили имя пользователя и пароль к нашему объекту запроса. В вашем случае вы можете просто добавить 2 новых параметра для имени пользователя и пароля, или просто добавить один и использовать что-то вроде кода аутентификации, который вы можете сделать настолько сложным или настолько простым, насколько вы хотите.

Некоторые идеи представляют собой нечто простое, например список идентификаторов GUID, которые являются приемлемыми ключами для шифрования IP-адреса запрашивающих серверов, так что код аутентификации работает только с этим IP-адресом, проверенным веб-службой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...