11

ログインしているユーザー以外の Exchange アカウントのフォルダーやアイテムにアクセスする可能性はありますか?

Exchange Web サービス マネージ API を使用してこれを行うことはできますか?

4

3 に答える 3

15

はい、可能ですが、他のユーザーのパスワードを知っているか、何らかの方法でこの資格情報 (NetworkCredentialオブジェクト) を取得する必要があります。コードの典型的な最初の行は次のようになります。

ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1);
myService.Credentials = new NetworkCredential ("user@mycorp.local", "P@ssword00");

そのため、現在のユーザーとして other であるアカウントで Exchange Server Web サービスにアクセスできます。詳細については、 ExchangeService オブジェクトの説明を参照してください。

管理者であれば、SMTP アドレスでユーザーの偽装を行うことができます。

于 2010-09-29T22:55:54.540 に答える
4

パスワードを知ることは間違っているし、なりすまし (最近) を使用することも間違っています。

方法は次のとおりです。

        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@ofsomemailbox.com"));
        var appointments = _service.FindItems(calendarSearch, searchFilter, view);
于 2014-09-29T17:22:21.737 に答える
0

各ユーザーのログインの代わりに偽装を使用することをお勧めします。偽装により、ユーザーを偽装できます。フルアクセスと同じではありません。フル アクセスは on の動作であり、偽装は as として動作します。

なりすましの前に、x 個のユーザー名とパスワードではなく、1 つのユーザー名とパスワードを使用します。

次のように偽装を使用できます。

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

ユーザーが他のユーザーに代理アクセス権を持っている場合、他のユーザーのフォルダーにアクセスできます。例: 個人 A は偽装され、個人 B にアクセスできます。

于 2012-08-23T06:33:04.170 に答える