Condividi tramite


Procedura: configurare un servizio Web XML per l'autenticazione di Windows

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Code Example

Seguire le procedure riportate di seguito per configurare e passare credenziali client a un servizio Web utilizzando tutte le forme di autenticazione di Windows tranne le credenziali client. In tal caso, seguire le procedure riportate nella sezione Autenticazione con Certificati client.

Per configurare un servizio Web per l'autenticazione di Windows

  1. Configurare il servizio Web per l'autenticazione di Windows mediante IIS.

    IIS consente di specificare la sicurezza a livello di directory o di file. Se si desidera specificare la sicurezza per un servizio Web su una base file per file, impostare le autorizzazioni per il servizio Web sul file asmx in IIS. Il file asmx costituisce il punto di ingresso nel servizio Web. Per ulteriori informazioni, vedere la documentazione relativa a IIS.

  2. Modificare il file di configurazione per specificare l'autenticazione di Windows.

    In un file di configurazione, impostare l’attributo mode dell’elemento XML authentication su "Windows". Nell'esempio di codice seguente viene modificato un file di configurazione per utilizzare l'autenticazione di Windows.

    // Fragment of a Web.config file.
    <authentication mode= "Windows">
    </authentication> 
    

Per passare credenziali client a un servizio Web utilizzando l'autenticazione di Windows

  1. Creare una nuova istanza della classe proxy per il servizio Web. Se non è stata generata una classe proxy, vedere Creazione di un proxy del servizio Web XML per i dettagli

  2. Creare una nuova istanza della classe NetworkCredential impostando le proprietà UserName, Password e Domain.

  3. Creare una nuova istanza della classe CredentialCache.

  4. Aggiungere NetworkCredential a CredentialCache utilizzando il medoto Add di CredentialCache

  5. Assegnare l'istanza della proprietà CredentialCache alla proprietà Credentials della classe proxy.

    Se viene utilizzata l'autenticazione integrata di Windows, è necessario impostare la proprietà Credentials su System.Net.CredentialCache.DefaultCredentials.

    Quando la proprietà Credentials viene impostata su DefaultCredentials, il client negozia con il server per eseguire l'autenticazione Kerberos e/o NTLM, in base alla configurazione del server.

  6. Nell'esempio di codice seguente sono impostate le credenziali client passate a un metodo del servizio Web utilizzando l'autenticazione di Windows.

Autenticazione con certificati client

Seguire le procedure riportate di seguito per configurare e passare credenziali client a un servizio Web utilizzando le credenziali client per l’autenticazione di Windows.

Per configurare un servizio Web per l'autenticazione con Certificati client

  1. L'elenco seguente rappresenta una panoramica delle modalità di configurazione di IIS per autenticare i client utilizzando Certificati client. Per ulteriori informazioni, vedere la documentazione relativa a IIS.

  2. Installare SSL 

  3. Configurare l'applicazione Web per accettare Certificati client.

  4. Modificare il file di configurazione per specificare l'autenticazione di Windows per il servizio Web.

    In un file di configurazione, impostare l’attributo mode dell’elemento XML authentication su "Windows". Nell'esempio di codice seguente viene modificato un file di configurazione per utilizzare l'autenticazione di Windows.

    // Fragment of a Web.config file.
    <authentication mode= "Windows">
    </authentication>
    

Per passare credenziali client a un servizio Web utilizzando l'autenticazione con Certificati client

  1. Creare una nuova istanza della classe proxy per il servizio Web. Se non è stata generata una classe proxy, vedere Creazione di un proxy del servizio Web XML per i dettagli.

  2. Creare un'istanza nuova di X509Certificate.

  3. Richiamare il metodo CreateFromCertFile per caricare il Certificato client da un file.

    Un client può ottenere un file di certificato client da un autorità di certificazione attendibile. Per ulteriori informazioni, vedere la documentazione relativa a IIS.

  4. Aggiungere X509Certificate alla raccolta di ClientCertificates ClientCertificates della classe proxy.

    L'esempio di codice seguente dimostra come un servizio Web client passi le credenziali utilizzando un Certificato client. Un Certificato client pubblicato dal server Web viene caricato da un file con il metodo CreateFromCertFile e quindi aggiunto alla proprietà ClientCertificates della classe proxy.

    ' 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);
    

Esempio

Quando la proprietà Credentials è impostata su System.Net.CredentialCache.DefaultCredentials, il client negozia con il server per eseguire l’autenticazione Kerberos e/o NTLM in base alla configurazione del server.

Nell'esempio di codice seguente sono impostate le credenziali client passate a un metodo del servizio Web utilizzando l'autenticazione di 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);
  }
}

Vedere anche

Attività

Procedura: eseguire l'autenticazione personalizzata tramite le intestazioni SOAP

Riferimento

NetworkCredential
CredentialCache
X509Certificate

Concetti

Sicurezza dei servizi Web XML creati tramite ASP.NET

Altre risorse

ASP.NET Web Application Security
Creare servizi Web XML mediante ASP.NET