Как настроить XML-веб-службу для проверки подлинности Windows
Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.
Code Example
В следующих инструкциях показано, как настроить и передать учетные данные клиента веб-службе, используя все формы проверки подлинности Windows, кроме учетных данных клиента. Если используется учетные данные клиента, следуйте инструкциям в разделе "Проверка подлинности с помощью сертификата клиента".
Настройка XML-веб-службы для проверки подлинности Windows
Настройте веб-службу так, чтобы она использовала проверку подлинности Windows с помощью службы IIS.
Служба IIS позволяет задать параметры безопасности на уровне каталога либо на уровне файла. Если требуется задать параметры безопасности веб-службы отдельно для каждого файла, задайте разрешения веб-службе в файле .asmx службы IIS. Файл .asmx является точкой входа веб-службы. Дополнительные сведения см. в документации по IIS.
Измените файл конфигурации, указав в нем проверку подлинности Windows.
Задайте атрибуту mode XML-элемента authentication в файле конфигурации значение "Windows". В следующем примере кода показано изменение файла конфигурации для использования проверки подлинности Windows.
// Fragment of a Web.config file. <authentication mode= "Windows"> </authentication>
Передача учетных данных клиента веб-службе с помощью проверки подлинности Windows
Создайте новый экземпляр прокси-класса веб-службы. Если прокси-класс еще не сгенерирован, см. раздел Создание прокси-класса XML-веб-службы
Создайте новый экземпляр класса NetworkCredential, указав свойства UserName, Password и Domain.
Создайте новый экземпляр класса CredentialCache.
Добавьте экземпляр класса NetworkCredential в экземпляру класса CredentialCache с помощью метода Add объекта CredentialCache
Назначьте экземпляр класса CredentialCache свойству Credentials прокси-класса.
Если используется встроенная проверка подлинности Windows, необходимо задать свойству Credentials значение System.Net.CredentialCache.DefaultCredentials.
Когда свойству Credentials присваивается значение DefaultCredentials, клиент запрашивает у сервера проверку подлинности Kerberos и/или NTLM, в зависимости от конфигурации сервера.
В следующем примере кода задаются учетные данные клиента, переданные методу веб-службы с помощью проверки подлинности Windows.
Проверка подлинности с помощью сертификата клиента
В следующих инструкциях показано, как настроить и передать учетные данные клиента веб-службе, используя проверку подлинности Windows с помощью учетных данных клиента.
Настройка XML-веб-службы для проверки подлинности с помощью сертификата клиента
В следующем списке приведены общие сведения о способе настройке службы IIS для проверки подлинности клиентов с помощью сертификата клиента. Дополнительные сведения см. в документации по IIS.
Установите SSL.
Настройте веб-приложение так, чтобы оно принимало сертификаты клиентов.
Измените файл конфигурации, указав в нем проверку подлинности Windows для веб-службы.
Задайте атрибуту mode XML-элемента authentication в файле конфигурации значение "Windows". В следующем примере кода показано изменение файла конфигурации для использования проверки подлинности Windows.
// Fragment of a Web.config file. <authentication mode= "Windows"> </authentication>
Передача учетных данных клиента веб-службе с использованием проверки подлинности с помощью сертификата клиента
Создайте новый экземпляр прокси-класса веб-службы. Если прокси-класс еще не сгенерирован, подробные сведения см. в разделе Создание прокси-класса XML-веб-службы.
Создайте новый экземпляр класса X509Certificate.
Вызовите метод CreateFromCertFile, чтобы загрузить сертификат клиента из файла.
Клиент может получить файл сертификата клиента от надежного центра сертификации. Дополнительные сведения см. в документации по IIS.
Добавьте объект X509Certificate в коллекцию ClientCertificates прокси-класса.
В следующем примере кода показана передача клиентом веб-службы своих учетных данных с помощью сертификата клиента. Сертификат клиента, выданный веб-сервером, загружается из файла с помощью метода CreateFromCertFile и добавляется свойству ClientCertificates прокси-класса.
' Instantiate proxy class to a Bank Web service. Dim bank As BankSession = new BankSession() ' Load the client certificate from a file. Dim x509 As X509Certificate = X509Certificate.CreateFromCertFile("c:\user.cer") ' Add the client certificate to the ClientCertificates property ' of the proxy class. bank.ClientCertificates.Add(x509) ' Call the method on the proxy class, which requires authentication ' using client certificates. bank.Deposit(500)
// Instantiate proxy class to a Bank Web service. BankSession bank = new BankSession(); // Load the client certificate from a file. X509Certificate x509 = X509Certificate.CreateFromCertFile(@"c:\user.cer"); // Add the client certificate to the ClientCertificates property // of the proxy class. bank.ClientCertificates.Add(x509); // Call the method on the proxy class, which requires // authentication using client certificates. bank.Deposit(500);
Пример
Когда свойству Credentials присваивается значение System.Net.CredentialCache.DefaultCredentials, клиент запрашивает у сервера проверку подлинности Kerberos и/или NTLM, в зависимости от конфигурации сервера.
В следующем примере кода задаются учетные данные клиента, переданные методу веб-службы с помощью проверки подлинности Windows.
Imports System
Imports System.Web.Services.Protocols
Imports System.Net
Imports MyMath
Public Class Calculator
Public Shared Sub Main()
' Create a new instance of the proxy class to an
' Web service method.
Dim mathproxy As MyMath.Math = New MyMath.Math()
' Create a new instance of CredentialCache.
Dim mycredentialCache As CredentialCache = New CredentialCache()
' Create a new instance of NetworkCredential using the client
' credentials.
Dim credentials As NetworkCredential = New _ NetworkCredential(UserName,SecurelyStoredPasword,Domain)
' Add the NetworkCredential to the CredentialCache.
mycredentialCache.Add(New Uri(mathproxy.Url), "Basic", _ credentials)
' Add the CredentialCache to the proxy class credentials.
mathproxy.Credentials = mycredentialCache
' Call the method on the proxy class.
Dim result As Integer
result = mathproxy.Add(3,5)
End Sub
End Class
using System;
using System.Web.Services.Protocols;
using System.Net;
using MyMath;
public class Calculator
{
public static void Main()
{
// Create a new instance of the proxy class to an XML
// Web service method.
MyMath.Math math = new MyMath.Math();
// Create a new instance of CredentialCache.
CredentialCache credentialCache = new CredentialCache();
// Create a new instance of NetworkCredential using the client
// credentials.
NetworkCredential credentials = new
NetworkCredential(UserName,SecurelyStroredPassword,Domain);
// Add the NetworkCredential to the CredentialCache.
credentialCache.Add(new Uri(math.Url), "Basic", credentials);
// Add the CredentialCache to the proxy class credentials.
math.Credentials = credentialCache;
// Call the method on the proxy class.
int result = math.Add(3,5);
}
}
См. также
Задачи
Как выполнять нестандартную проверку подлинности с использованием заголовков SOAP
Справочник
NetworkCredential
CredentialCache
X509Certificate
Основные понятия
Безопасность XML-веб-служб, создаваемых с помощью ASP.NET
Другие ресурсы
ASP.NET Web Application Security
XML-веб-службы с использованием ASP.NET