2008-10-07 22 views
5

Utilizzo i servizi Web di Exchange per trovare, creare, aggiornare ed eliminare gli appuntamenti dai calendari per una o più persone. L'applicazione dovrebbe essere utilizzata da un manager per visualizzare i tempi di ferie dei dipendenti e assegnare gli appuntamenti in base alla disponibilità.È necessario un modo per autenticarsi su Exchange Web Services

Per fare in modo che tutto funzioni, le credenziali dell'utente autenticato devono essere inviate al servizio web. Finora, i due metodi che ho trovato per consentire questo sono 1) passare il nome utente e la password di ciascun utente e 2) impersonare un utente per utilizzare DefaultCredentials. L'opzione DefaultCredentials non funziona per noi perché non consentiamo la rappresentazione di utenti.

Qualcuno conosce un altro modo?

+0

sembra che abbiamo bisogno delle credenziali che appartengono al proprietario di ogni appuntamento al fine di aggiornare un appuntamento. ancora esaminando questo. – coder1

risposta

6

ci sono delle restrizioni politica aziendale per impedire l'utilizzo di rappresentazione? Ti stai riferendo alla rappresentazione di Windows o alla rappresentazione di Exchange?

A seconda della rappresentazione che non è possibile utilizzare, un'alternativa potrebbe essere un accesso delegato.

Se l'obiettivo è quello di lasciare un gestore di visualizzare più caselle di posta, qui ci sono alcune opzioni:

(1) danno accesso delegato alle caselle di posta dei dipendenti al gestore. A seconda del livello di accesso delegato, ciò consentirebbe al gestore di visualizzare le cassette postali dei dipendenti e modificarle secondo necessità. C'è un avvertimento su questo approccio, a seconda di cosa/come viene concesso l'accesso, il delegato (dipendente) potrebbe rimuovere l'accesso e impedire al gestore di visualizzare i loro calendari.

Per l'autenticazione tramite accesso delegato, presupponendo che l'applicazione che utilizza servizi Web fosse in esecuzione nel contesto del gestore, è possibile utilizzare DefaultCredentials.

(2) Creare un account di servizio con diritti di rappresentazione o accesso delegato sulle cassette postali dei dipendenti. Quindi accedere come account di servizio.

Inoltre, ecco alcuni link che potresti trovare utili ...

2

Se ho capito bene, il gestore userebbe l'applicazione e si autenticherà per l'EWS come se stesso. EWS non sarebbe quindi in grado di aggiornare la cassetta postale di un altro utente a causa di autorizzazioni insufficienti.

Come fornire l'accesso al gestore alla cassetta postale di ciascun utente?

(O mi manca una parte sostanziale della questione?)

1

Se l'utente verrà registrato sul proprio computer e queste credenziali saranno probabilmente disponibili e nella cache delle credenziali, è possibile costruire un oggetto WebCredential dalle ICredentials agli oggetti ottenuti da lì:

public static ExchangeService GetService() 
{ 
    var webCredentials = new WebCredentials(CredentialCache.DefaultNetworkCredentials); 

    var service = new ExchangeService(ExchangeVersion); 
    service.AutodiscoverUrl(Properties.Settings.Default.SmptAccountName); 
    service.Credentials = credentials; 

    return service; 
}