Как эффективно аутентифицировать пользователя, вызывающего веб-сервис? - PullRequest
1 голос
/ 15 декабря 2008

В многосерверной среде пользователи смогут использовать страницу для размещения, обновления или удаления файлов на серверах. Я рассматривал возможность использования веб-службы (на каждом сервере), вызываемой потоком IIS, для выполнения этой работы (со страницей управления aspx).

Однако по понятным причинам я не хочу, чтобы кто-либо мог вызывать этот веб-сервис (отправляя правильно сформированный запрос со своих компьютеров).

Мне интересно, какой был бы наиболее эффективный (с точки зрения сложности, масштабируемости) способ гарантировать, что доступ к веб-сервису ограничен моей страницей (токен? Отправка принципала текущего пользователя? их пароль, поэтому об отправке пары логин / пароль не может быть и речи)

Ответы [ 2 ]

1 голос
/ 15 декабря 2008

Вы можете связать хеш SHA1 с IP-адресом для каждого входящего запроса, сгенерированного комбинацией браузера (например, MSIE6.0 или FireFox3), IP-адресом, именем пользователя (если возможно) и / или временем, и сохранить его в БД (возможно, sqlite) со временем истечения, подходящим для завершения загрузки / передачи файла (скажем, 1 час). Таким образом, для каждого запроса вы можете проверить связанный хеш с IP-адресом.

Если под страницей подразумевается браузер, я предлагаю использовать cookie для передачи хэша.

Примечание: я говорю, что хэш SHA1, потому что его длина 160 бит (40 байт). Таким образом, столкновения не так просты, особенно если вы используете время в сочетании с чем-то уникальным для пользователя для создания дайджеста.

Я работаю на C ++, поэтому реализовал аналогичную функциональность в приложении CGI.

0 голосов
/ 15 декабря 2008

Вы должны быть в состоянии получить пользователя, который вызывает веб-сервис, получив объект IPrinciple, хранящийся в:

IPrinciple _currentUser = HttpContext.Current.User;

После того, как вы получите текущего пользователя, вы сможете проверить, есть ли у этого пользователя разрешения на любые действия, которые он пытается выполнить, либо проверив, находится ли пользователь в соответствующей роли, либо любым другим способом, который вы настроили для проверки прав доступа.

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