Мы стремимся защитить ряд веб-служб ASP.Net 2.0 .asmx. Форма, на которой будут размещены веб-службы, уже аутентифицирована.
Можно ли защитить веб-службы с помощью проверки подлинности с помощью форм? Каковы плюсы и минусы и другие возможные способы достижения этого. Мы определенно не хотим передавать имя пользователя / pwd или токен при каждом вызове веб-метода.
Можно ли защитить веб-службу с помощью проверки подлинности с помощью форм?
Ответы (4)
Суть аутентификации с помощью формы заключается в том, что она разработана для людей, тогда как веб-служба предназначена для использования клиентским приложением. Хотя такая аутентификация возможна, это неправильный образ мышления.
Необходимый уровень безопасности, очевидно, зависит от чувствительности данных, с которыми вы работаете, но я предполагаю, что это, по крайней мере, несколько конфиденциально (но меньше, чем банковские транзакции). Возможно, вы могли бы использовать SSL и передать имя пользователя и пароль, как предлагал jle, пока я набирал это, или вам может потребоваться ключ api, как это делает flickr.
Другой более безопасный вариант - передать имя пользователя и пароль только один раз (и с безопасностью ssl) и получить токен, действительный в течение определенного периода времени. Это позволяет защитить информацию о пароле и избежать постоянных накладных расходов на ssl.
Как уже упоминалось, это во многом зависит от того, насколько конфиденциальной является информация, которую вы пытаетесь защитить.
WSE устарела. Не используйте его, если у вас совсем нет выбора.
Практически все функции WSE лучше реализованы в WCF. Остальные возможности, не реализованные WCF, сами по себе устарели (например, DIME).
Это возможно, но вам нужно будет перенаправить пользователей на страницу входа. Другой вариант передачи имени пользователя / pw - использование веб-службы через ssl. Если вы зашифруете соединение, обычную аутентификацию можно будет использовать без проблем.
Вы должны иметь возможность использовать WSE для защиты своей службы с помощью проверки подлинности с помощью форм - хотя лично мне никогда не приходилось этого делать.
Вот некоторые ресурсы, использующие WSE:
- http://aleemkhan.wordpress.com/2007/09/18/using-wse-30-for-web-service-authentication/
- http://msdn.microsoft.com/en-us/library/aa480575.aspx
Чтобы не использовать WSE, вам нужно реализовать что-то вроде этого, о чем упоминали некоторые из других участников, хотя я не уверен, насколько это будет надежно: