Odpowiedz

14

Tak, jest to możliwe, ale powinieneś znać hasło innego użytkownika lub przechwytywać w ten sposób poświadczenia (obiekt NetworkCredential). Typowe pierwsze linie kodu z was może być

ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1); 
myService.Credentials = new NetworkCredential ("[email protected]", "[email protected]"); 

, dzięki czemu można uzyskać dostęp do serwera Exchange Web Services przy użyciu konta, które są inne jako bieżącego użytkownika. Aby uzyskać więcej informacji, zobacz opis: ExchangeService object.

Jeśli jesteś administratorem, możesz utworzyć użytkownika impersonation by SMTP address.

+0

@Alfred Myers & @ user457261: Nie masz żadnego komentarza. Czy informacje, które napisałem, są potrzebne? – Oleg

+0

Dzięki za odpowiedź, ale szukałem sposobu, nie znając każdego hasła. Podobnie jak w przypadku superużytkownika, który ma dostęp do wszystkich kont. – Luke

+2

@Luke: Ostatnie zdania z mojej odpowiedzi opisują, jak to zrobić. Jako "superadmin" możesz podszywać się pod dowolnego użytkownika tylko poprzez adres SMTP bez żadnych informacji o jego haśle. Zajrzyj na http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx jeszcze raz. – Oleg

0

Proponuję użyć podszywania się zamiast logowania dla każdego użytkownika. Poprzez podszywanie się można podszywać się pod użytkowników. To nie to samo, co pełny dostęp. Pełny dostęp polega na zachowaniu się, podszywanie się to działanie.

Przed podszywaniem się jest jedna nazwa użytkownika i hasło zamiast x nazw użytkownika i haseł.

Można użyć personifikacji jak ten sposób:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 
service.Credentials = new NetworkCredential(appName, appPassword, emailDomain); 
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userToImpersonate); 

gdy użytkownik ma przekazać dostęp do kogoś innego, można uzyskać dostęp do folderu z innym użytkownikiem. Na przykład: Osoba A zostanie podana i będzie mogła uzyskać dostęp do Osoby B

4

Znajomość hasła jest nieprawidłowa i podszywanie się pod kogoś (obecnie) jest nieprawidłowe.

Oto jak to zrobić.

 ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
     //CREDENTIALS OF AN ACCOUNT WHICH HAS READ ACCESS TO THE CALENDAR YOU NEED 
     _service.Credentials = new WebCredentials(username, password); 
     _service.Url = new Uri(serviceURL); 

     SearchFilter.SearchFilterCollection searchFilter = new SearchFilter.SearchFilterCollection(); 
     searchFilter.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(-1))); 
     searchFilter.Add(new SearchFilter.IsLessThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(2))); 
     ItemView view = new ItemView(50); 
     view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.AppointmentType, AppointmentSchema.End); 

     //THIS NEXT LINE!!! 
     var calendarSearch = new FolderId(WellKnownFolderName.Calendar, new Mailbox("[email protected]")); 
     var appointments = _service.FindItems(calendarSearch, searchFilter, view); 
+0

To jest znacznie lepsza odpowiedź, dokładnie to, czego szukałem przez tak długi czas – Nacht

Powiązane problemy