Share via


Impostazione dell'autenticazione non Kerberos in progetti di Visual Studio

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Quando si utilizza Visual Studio 2005, alcuni meccanismi di autenticazione richiedono ulteriori procedure di configurazione. L'autenticazione Kerberos, ad esempio, richiede la registrazione del nome SPN e altre procedure correlate. Per ulteriori informazioni, vedere Registrazione di nomi SPN Kerberos utilizzando Http.sys.

Gli endpoint HTTP configurati per l'utilizzo dell'autenticazione integrata possono rispondere ai client utilizzando Kerberos o NTLM come schema di autenticazione. L'effettivo schema, Kerberos o NTLM, selezionato e utilizzato dal server si basa su quello utilizzato dal client nel richiedere l'autenticazione. Per ulteriori informazioni, vedere Tipi di autenticazione dell'endpoint.

In questo argomento sono incluse informazioni dettagliate sulla modifica di un progetto di Visual Studio 2005 affinché l'applicazione client dei servizi Web richieda uno schema di autenticazione diverso da Kerberos quando nel server viene selezionata l'autenticazione integrata come tipo di autenticazione.

In genere, quando si scrive un'applicazione client in Visual Studio 2005, è necessario configurare le credenziali per l'utilizzo dei servizi Web XML nativi nell'implementazione di SQL Server. Presupponendo di utilizzare l'autenticazione integrata, il codice potrebbe essere simile al seguente:

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

Se, tuttavia, l'autenticazione Kerberos non è stata configurata correttamente per l'utilizzo da altri computer (registrazione del nome SPN e così via), in Visual Studio 2005 verrà utilizzato sempre Kerberos come schema di autenticazione, a meno che non lo si disabiliti esplicitamente nell'endpoint HTTP (sql_endpoint) selezionando NTLM, BASIC o DIGEST quale tipo di autenticazione. Potrebbe rendersi necessario specificare l'utilizzo da parte di Visual Studio 2005 di un altro schema supportato, ad esempio NTLM.

Nel codice seguente viene illustrato come sostituire lo schema di autenticazione utilizzato da Visual Studio 2005 e impostare l'utilizzo di NTLM come meccanismo di autenticazione per le richieste dell'applicazione client:

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;

Benché sia possibile forzare Visual Studio 2005 per l'utilizzo di NTLM invece di Kerberos in un endpoint INTEGRATED tramite l'esempio di codice precedente, è consigliabile creare un endpoint configurato con AUTHENICATION=NTLM quale modo per passare a NTLM quando Kerberos non può essere utilizzato per problemi relativi al nome SPN.

Ulteriori requisiti di configurazione per l'ambiente di sviluppo

Le modifiche al codice indicate nella sezione precedente consentiranno all'applicazione client di specificare e utilizzare uno schema di autenticazione diverso da Kerberos. È tuttavia necessario eseguire ulteriori operazioni a supporto dell'applicazione quando questa viene eseguita e verificata nell'ambiente di sviluppo.

Per impostazione predefinita, la funzionalità Aggiungi riferimento Web di Visual Studio utilizza sempre Kerberos durante il tentativo di recuperare la risposta WSDL dal servizio Web. Per evitare questo comportamento, è possibile utilizzare le soluzioni alternative seguenti:

  1. Configurare l'autenticazione Kerberos corretta per l'ambiente di sviluppo. Questa operazione comporta la registrazione dei nomi Kerberos per il singolo utente o, se applicabile, per un gruppo di dominio di sviluppatori. Per ulteriori informazioni, vedere Registrazione di nomi SPN Kerberos utilizzando Http.sys.

  2. Disabilitare temporaneamente Kerberos nell'endpoint. Utilizzando la procedura ALTER ENDPOINT seguente per passare alla modalità DIGEST, è possibile ottenere la risposta WSDL corretta.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. Aggiungere il riferimento Web nel progetto di Visual Studio 2005.

  4. Riportare l'endpoint in modalità INTEGRATED come indicato di seguito:

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

In alternativa, è possibile attenersi alla procedura seguente:

  1. Recuperare la risposta WSDL tramite un altro meccanismo, ad esempio utilizzando Internet Explorer e salvando la risposta WSDL in un file.

  2. Aggiungere il riferimento Web in Visual Studio dal file invece che come URL, ad esempio: http://MyServer/sql_endpoint?wsdl.