Utilizzo dei delegati con i servizi Web di Exchange
-
06-07-2019 - |
Domanda
Qualcuno ha usato i delegati con i servizi Web Exchnage? Vorrei che un utente fosse in grado di controllare i calendari degli altri utenti in Exchange. Trovo che questo problema sia un po 'complicato e mi piacerebbe vedere come gli altri sono stati in grado di farlo funzionare correttamente.
Soluzione
Ho appena iniziato qui, ma sono riuscito ad accedere ai calendari delle risorse tramite un account delegato.
Ho usato i consigli di questo articolo sull'account delegato e conti delle risorse. (Gli account delle risorse sono complicati perché sono disabilitati in Active Directory e devi utilizzare un account delegato per accedervi)
Dopo aver impostato l'account delegato sul server, ho impostato ExchangeServerBinding utilizzando le credenziali dell'account delegato:
ExchangeServiceBinding binding = new ExchangeServiceBinding();
binding.Url = @"https://dc1.litwareinc.com/ews/exchange.asmx";
// Setup binding with username and password of the delegate account
binding.Credentials =
new NetworkCredential(delegateuserName, delegatepassword, "litwareinc.com");
( Sto usando l'immagine del server virtuale preparato da Microsoft per il test )
Quindi, quando accedo alla cassetta postale, ho impostato una richiesta FindItemType e utilizzo l'indirizzo smtp dell'account a cui voglio accedere:
// Prepare request
var findItemRequest = new FindItemType();
// Setup the mailbox using the smtp address of the account wanted
var mailbox = new EmailAddressType {EmailAddress = mailboxId};
findItemRequest.ParentFolderIds =
new[] {new DistinguishedFolderIdType {Mailbox = mailbox}};
((DistinguishedFolderIdType) findItemRequest.ParentFolderIds[0]).Id =
DistinguishedFolderIdNameType.calendar;
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
// Add ItemResponseShapeType and Calendarview to request here ...
// The create a FindItemResponseType using the binding and the request
var response = binding.FindItem(findItemRequest);
Quindi in breve:
- Configura un account con accesso delegato sul server Exchange, questo può essere fatto tramite owa o con uno script di Exchange Shell
- Utilizza l'account con accesso delegato sull'oggetto ExchangeServiceBinding
- Accedi all'account di destinazione utilizzando FindItemType con l'account di destinazione smtp-addres come EmailAddressType
Saluti Jesper Hauge