11

Có thể truy cập các thư mục và mục của các tài khoản Exchange khác ngoài tài khoản người dùng đã đăng nhập không?API quản lý dịch vụ Web Exchange: Truy cập các mục người dùng khác

Tôi có thể thực hiện việc này thông qua API được quản lý của Exchange Web Services không?

+0

Bạn có đang sử dụng EWS trực tiếp hoặc bạn đang sử dụng EWS qua API được quản lý EWS không? –

+0

@Alfred Myers Tôi sử dụng API được quản lý EWS – Luke

Trả lời

14

Có thể, nhưng bạn nên biết mật khẩu của người dùng khác hoặc lấy một số cách thông tin đăng nhập này (đối tượng NetworkCredential). Các dòng mã đầu tiên điển hình của bạn có thể là

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

để bạn có thể truy cập Dịch vụ web Exchange Server bằng tài khoản khác với người dùng hiện tại. Xem mô tả ExchangeService object để biết thêm thông tin.

Nếu bạn là quản trị viên, bạn có thể đặt người dùng impersonation by SMTP address.

+0

@Alfred Myers & @ user457261: Bạn không viết bất kỳ nhận xét nào. Là thông tin mà tôi đã viết những gì bạn cần? – Oleg

+0

Cảm ơn câu trả lời của bạn, nhưng tôi đang tìm kiếm một cách mà không cần phải biết mật khẩu. Giống như sử dụng siêu người dùng có thể truy cập tất cả tài khoản. – Luke

+2

@Luke: Câu cuối cùng trong câu trả lời của tôi mô tả cách thực hiện điều này. Là "superadmin", bạn có thể mạo danh bất kỳ người dùng nào bằng địa chỉ SMTP mà không có bất kỳ thông tin nào về mật khẩu của mình. Xem http://msdn.microsoft.com/en-us/library/dd633680 (EXCHG.80).aspx một lần nữa. – Oleg

0

Tôi khuyên bạn nên sử dụng mạo danh thay vì đăng nhập cho từng người dùng. Thông qua mạo danh, bạn có thể mạo danh người dùng. Nó không giống như truy cập đầy đủ. Toàn quyền truy cập là hành vi của, mạo danh là hành động như.

Trước khi mạo danh là bạn có một tên người dùng và mật khẩu thay vì có x tên người dùng và mật khẩu.

Bạn có thể sử dụng mạo danh như theo cách này:

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

khi người dùng có ủy quyền truy cập cho người khác, bạn có thể truy cập vào thư mục của người dùng khác. Ví dụ: Người A sẽ bị mạo danh và có thể truy cập Người B

4

Biết mật khẩu sai và sử dụng mạo danh (những ngày này) là sai.

Đây là cách bạn thực hiện.

 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

Đây là câu trả lời tốt hơn nhiều, chính xác những gì tôi đã tìm kiếm quá lâu – Nacht

Các vấn đề liên quan