веб-сервис asmx: аутентификация клиента

Можно использовать "случай" - конструкция:

doGuessing num = do
    putStrLn "Enter your guess:"
    guess <- getLine
    case (read guess) of
        g | g < num -> do 
            putStrLn "Too low!"
            doGuessing num
        g | g > num -> do 
            putStrLn "Too high!"
            doGuessing num
        otherwise -> do 
            putStrLn "You Win!"
9
задан bluish 28 November 2012 в 13:54
поделиться

2 ответа

Существует три общих подхода к специальной безопасности SOAP:

  1. Первый - это передача информации аутентификации при каждом вызове.
  2. Второй - передать его один раз, чтобы получить идентификатор сеанса, который затем передается с каждым вызовом.
  3. Третий по существу такой же, как второй, только с использованием файлов cookie.

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

3
ответ дан 4 December 2019 в 19:35
поделиться

Это очень похоже на мой вопрос: " Что мы должны реализовать, чтобы разрешить клиентам использовать нашу веб-службу? "

В итоге мы не публиковали WSDL, а только обслуживали сервис через https и требующий базовой аутентификации . НЕ используйте базовую аутентификацию, если вы не можете заставить всех клиентов использовать https.

Если это веб-служба .net, то вот запись файла конфигурации, чтобы запретить публикацию wsdl.

  <system.web>
    <webServices>
      <protocols>
        <remove name="Documentation" />
      </protocols>
    </webServices>
  </system.web>

Когда вы переходите к На странице вы получите сообщение об ошибке, подобное тому, которое вы получили бы, если бы попытались вручную загрузить файл web.config с сайта. Как отмечает Стивен, это безопасность через неясность, и НЕ должен использоваться сам по себе для защиты вашей веб-службы. Однако при использовании в дополнение к базовому auth + https это немного приятное дополнение.

Код на стороне клиента:

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

WebRef.Url = "url";
WebRef.Credentials = new System.Net.NetworkCredential("userid", "password");

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

WebRef.Proxy = new WebProxy("url");
WebRef.Proxy.Credentials = new System.Net.NetworkCredential("userid", "password");
9
ответ дан 4 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: