2009-04-17 11 views
8

Qualcuno può dare una chiara spiegazione della differenza tra l'utilizzo diDifferenza tra clientCredentialType = Windows e = Ntlm

  • clientCredentialType=Windows, e
  • clientCredentialType=Ntlm

in un Web.config sul lato server quando ospitare un servizio WCF?

Ho un servizio SOAP 1.1 (basicHttpBinding) per l'interoperabilità con i clienti esistenti. Utilizza i ruoli ASP.NET quindi richiede l'autenticazione dei client.

Quando sto usando il server VS2005 (Cassini) per ospitare il servizio, devo specificare ClientCredentialType=Ntlm come sopra, e selezionare la casella di autenticazioneNtlm nelle proprietà del progetto in VS2005. ClientCredentialType=Windows non funziona - i clienti ottengono un:

401 errore Unauthorized

Tuttavia quando sono in esecuzione in IIS, è il contrario: ClientCredentialType=Windows opere, e ClientCredentialType=Ntlm fallisce.

Qualcuno può spiegare questo, e preferibilmente suggerire un modo in cui posso avere lo stesso file web.config per eseguire il servizio in Cassini e IIS?

Aggiornamento

ho NET 3.5 SP1 sulla mia macchina dev, che è XP SP2 in esecuzione in un dominio. Pertanto, Cassini viene eseguito con un account di dominio e IIS 5.1 con un account locale.

Mi chiedo se potrebbe essere correlato al cambiamento di rottura in .NET 3.5SP1 descritto in questi articoli.

http://www.aspnetpro.com/newsletterarticle/2008/12/asp200812ab_l/asp200812ab_l.asp http://msmvps.com/blogs/alvin/archive/2008/11/14/net-3-5-sp1-breaking-change-to-wcf.aspx http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354236

La situazione sembra simile a quella clientCredentialType=Windows fallisce quando il server è in esecuzione con un account di dominio (che è la mia situazione con Cassini - in esecuzione come il mio normale account utente di dominio), e funziona durante l'esecuzione sotto un account locale (che è la mia situazione con IIS).

Il problema è che le correzioni suggerite richiedono modifiche a un file di configurazione del client WCF, ma nel mio caso sto utilizzando SOAP 1.1 (basicHttpBinding) con client non WCF.

risposta

1

clientCredentialType = Windows utilizza l'autenticazione integrata di Windows che può essere eseguita tramite Active Directory e NTLM.

Ovviamente il tipo NTLM utilizzerà solo NTLM per l'autenticazione.

Sono sicuro che hai visto già, ma qui è un link per la sicurezza WCF: http://msdn2.microsoft.com/en-us/library/ms734769.aspx

Alcuni dettagli della configurazione aiuterebbero. I server IIS e Cassini sono in esecuzione nella stessa casella? Se non hai la stessa configurazione di account su ogni scatola? IIS6 di default supporta NTLM, quindi non dovresti avere problemi a farlo funzionare.

+0

Grazie. Ho letto questo e ho un'idea superficiale della differenza tra NTLM e Windows. Ma non perché Windows non funziona con Cassini. – Joe