2012-10-12 10 views
7

Sto tentando di creare un sito Web ASP.NET (.NET 3.5) per connettersi al server Exchange 2010 tramite i servizi Web di Exchange, sono in grado di connettersi a EWS quando definisco il nome utente, la password e il dominio per autenticarsi ma vorrei, se possibile, non includere i dettagli di accesso nel mio codice.Autenticazione utente AD

In IIS ho abilitato l'autenticazione integrata di Windows per il sito, in web.config del sito che ho <authentication mode="Windows"/>.

Il codice che segue è quello che ho Woking con:

svc.UseDefaultCredentials = True 
svc.Credentials = New WebCredentials() 
svc.Url = New Uri(svcURL) 

Con il codice di cui sopra sto ricevendo il messaggio:

Quando si effettua una richiesta da un account che non dispone di un casella di posta, è necessario specificare l'indirizzo SMTP primario della cassetta postale per qualsiasi ID cartella distinto.

Quando tento di usare svc.Credentials = CredentialCache.DefaultNetworkCredentials (al posto di svc.Credentials = New WebCredentials()) ricevo il messaggio di errore:

Impossibile eseguire il cast oggetto di tipo 'System.Net.SystemNetworkCredential' a tipo 'Microsoft.Exchange .WebServices.Data.ExchangeCredentials'.

Come accennato, l'unica cosa che ha funzionato è quello di definire le credenziali utente per l'autenticazione da hardcoding password utente, che avrei preferito non faccio: svc.Credentials = New WebCredentials("username","password","domain")

nessuno è stato in grado di autenticare a EWS utilizzando le credenziali dell'utente attualmente connesso in un sito Web ASP.NET?

+0

Lima, dove è possibile trovare una soluzione per questo scenario? –

risposta

2

Per impostazione predefinita non è possibile delegare le credenziali di un utente da un server (il server su cui si sta ospitando il sito ASP.NET) a un altro (il server di Exchange). Questo è noto come "hop del server" e Windows lo impedirà per impostazione predefinita come misura di sicurezza.

avete un paio di opzioni per risolvere questo:

  1. Utilizzo di Kerberos: Quando Kerberos è abilitato rende possibile delegare le credenziali utente tra i server quando si utilizza l'autenticazione di Windows. Non conosco i dettagli esatti su come configurare Kerberos in quanto sono solo un umile sviluppatore, ma forse l'amministratore di sistema può aiutarti. AFAIK, è necessario configurare il server ASP.NET per consentire la delega degli utenti.
  2. Impostazione dell'identità utente del pool di applicazioni IIS: Se Kerberos non è un'opzione, è possibile modificare l'identità del pool di applicazioni in cui viene eseguito il sito ASP.NET. Definire innanzitutto un nuovo pool di applicazioni nel gestore IIS. Quindi vai alla finestra di dialogo Impostazioni avanzate per quel pool di applicazioni e imposta l'identità a un utente di dominio a cui è consentito accedere al tuo server Exchange. Maggiori informazioni sull'identità del pool di applicazioni qui: http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx.
  3. Impostazione del < identità > elemento: Se per qualche motivo non può cambiare il pool di applicazioni, si può provare la rappresentazione del vostro sito web ASP.NET utilizzando l'identità < > elemento nel file web.config. ASP.NET ti offre la possibilità di archiviare le credenziali nel registro in modo da non doverle inserire direttamente nel tuo file web.config. Maggiori informazioni qui: http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  4. Utilizzando la < appSettings> ellement e la crittografia: L'ultima opzione mi viene in mente è quello di mettere semplicemente le credenziali nel file web.config come normali < appSettings> e quindi crittografare l'intero < appSettings > sezione. Dovresti semplicemente leggere l'appSettings dal tuo codice usando the AppSettingsReader class. .NET consente di crittografare le sezioni del file web.config e di leggere le impostazioni senza che si noti che la sezione è crittografata. .NET si prende cura della decrittografia per te. Maggiori informazioni qui: http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
Problemi correlati