Поделиться через


Указание проверки подлинности, отличной от Kerberos, в проектах Visual Studio

При работе в среде Visual Studio 2005 для некоторых механизмов проверки подлинности требуется дополнительная настройка. Например, для проверки подлинности Kerberos требуется регистрация основного имени службы (Service Principal Name, SPN) и выполнение других связанных с ней шагов. Дополнительные сведения см. в разделе Регистрация имен участников службы Kerberos в файле Http.sys.

В SQL Server 2005 конечные точки HTTP, настроенные на использование встроенной проверки подлинности, могут отвечать клиентам, используя схемы проверки подлинности Kerberos или NTLM. Фактическая схема, выбранная и используемая сервером, Kerberos или NTLM, основывается на любой из схем, используемой клиентом при запросе проверки подлинности. Дополнительные сведения см. в разделе Типы проверки подлинности конечной точки.

В данном разделе содержатся подробности об изменении проекта Visual Studio 2005 таким образом, чтобы клиентское приложение для веб-служб запрашивало схему проверку подлинности, отличную от Kerberos, если на сервере выбрана встроенная проверка подлинности.

Обычно при написании клиентского приложения в среде Visual Studio 2005 необходимо настроить учетные данные на использование с собственными веб-службами с поддержкой XML в реализации SQL Server 2005. Если используется встроенная проверка подлинности, можно указать в коде что-то вроде следующего:

myServer.sql_endpoint proxy = new myServer.sql_endpoint();
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Однако если проверка подлинности Kerberos не настроена правильно для работы с других компьютеров (регистрация основного имени службы и т.д.), среда Visual Studio 2005 всегда будет пытаться использовать в качестве схемы проверки подлинности Kerberos, пока Kerberos не будет явно отключена как допустимая схема проверки подлинности на конечной точке HTTP (sql_endpoint), для чего следует выбрать в качестве типа проверки подлинности NTLM, BASIC или DIGEST. Вместо этого можно указать среде Visual Studio 2005 использовать другую поддерживаемую схему, например NTLM.

Следующий код показывает, как можно переопределить схему проверки подлинности, используемую средой Visual Studio 2005, и заставить клиентское приложение запрашивать в качестве механизма проверки подлинности NTLM:

mattm1.sql_endpoint proxy = new mattm1.sql_endpoint();
System.Net.CredentialCache myCreds = new System.Net.CredentialCache();

myCreds.Add(new Uri(proxy.Url), "NTLM", System.Net.CredentialCache.DefaultCredentials.GetCredential(new Uri(proxy.Url), "NTLM"));
proxy.Credentials = myCreds;

Хотя можно заставить среду Visual Studio 2005 использовать NTLM вместо Kerberos на конечной точке INTEGRATED, используя предыдущий пример кода, рекомендуется создать конечную точку с настройкой AUTHENICATION=NTLM, чтобы использовать NTLM в том случае, если нельзя использовать Kerberos из-за проблем с основным именем службы.

Дополнительные требования к настройке среды разработки

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

Обратите внимание, что по умолчанию в связанных с веб-ссылками функциях среды Visual Studio при попытке получить WSDL-ответ от веб-службы всегда используется Kerberos. Избежать этого можно следующим путем:

  1. Правильно настроить проверку подлинности Kerberos для конкретной среды разработки. При этом основное имя службы (SPN) Kerberos регистрируется для отдельного пользователя либо, если это применимо, для группы разработчиков в домене. Дополнительные сведения см. в разделе Регистрация имен участников службы Kerberos в файле Http.sys.

  2. Временно отключить Kerberos на конечной точке. Переключившись с помощью следующей процедуры ALTER ENDPOINT в режим DIGEST, можно получить корректный WSDL-ответ.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. Добавить веб-ссылку в проект Visual Studio 2005.

  4. Переключить конечную точку обратно в режим INTEGRATED следующим путем:

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

В качестве альтернативы можно выполнить следующее:

  1. Извлечь WSDL-ответ с помощью какого-либо другого механизма, например, с помощью Internet Explorer, сохранив этот ответ в файл.
  2. Добавить веб-ссылку в среду Visual Studio из файла вместо URL-адреса, например: http://MyServer/sql_endpoint?wsdl.

См. также

Справочник

Настройка сервера на прослушивание запросов собственных веб-служб с поддержкой XML

Другие ресурсы

CREATE ENDPOINT (Transact-SQL)
ALTER ENDPOINT (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005