Domanda

Uso i servizi Web di Exchange per trovare, creare, aggiornare ed eliminare gli appuntamenti dai calendari per una o più persone. L'applicazione verrebbe utilizzata da un manager per visualizzare il tempo di vacanza dei dipendenti, nonché per assegnare appuntamenti in base alla disponibilità.

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

Qualcuno conosce un altro modo?

È stato utile?

Soluzione

Esistono restrizioni delle politiche aziendali che ti impediscono di utilizzare la rappresentazione? Ti riferisci alla rappresentazione di Windows o alla rappresentazione di Exchange?

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

Se l'obiettivo è consentire a un gestore di visualizzare più cassette postali, ecco alcune opzioni:

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

Per l'autenticazione tramite accesso delegato, supponendo che l'applicazione che utilizzava i servizi Web fosse in esecuzione nel contesto del gestore, dovresti essere in grado di utilizzare DefaultCredentials.

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

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

Altri suggerimenti

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

Che ne dici di dare al gestore l'accesso alla cassetta postale di ciascun utente?

(O mi manca una parte sostanziale della domanda?)

Se l'utente sta per accedere al proprio computer e è probabile che queste credenziali siano disponibili nella cache delle credenziali, è possibile costruire un oggetto WebCredential dall'oggetto ICredentials ottenuto 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;   
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top