私のasp.net Webアプリケーションを閲覧しているユーザの認証情報をEWS FindAppointments
コールに渡すことはできますか?HostingEnvironment.Impersonate資格情報をExchangeService EWSに渡す方法は?
私が唯一の問題は、EWSのAPI discussed hereを使用してExchangeの偽装に関連するべきではありませんので、間違いなく自分のカレンダーの読み取り権限を持つことになりますアクティブなブラウジングユーザー用のカレンダーの詳細を返すようにしようとしています。
以下のコードは、Windows認証とID偽装が設定されていてもアクセス拒否エラーが発生しても、localhostを実行しているのにWebサーバーから実行しても問題ありません。
using (HostingEnvironment.Impersonate())
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl(UserEmailAddress);
Mailbox mb = new Mailbox(UserEmailAddress);
FolderId cfCalendarFolderID = new FolderId(WellKnownFolderName.Calendar, mb);
CalendarView cvCalendarView = new CalendarView(DateTime.Now, DateTime.Now.AddDays(30), 1000);
cvCalendarView.MaxItemsReturned = 3;
はおそらく、私は私のExchangeService
オブジェクトへHostingEnvironment
資格情報を渡すための簡単な方法が欠けていますか?
service.UseDefaultCredentials
が何であるかを確認する方法はありますか?
Windowsの認証された偽装されたユーザーからパスワードを取得する方法がないため、以下は使用できません。
service.Credentials = new System.Net.NetworkCredential(username, password, domain);
私も以下を試しましたが、同じServiceResponseExceptionアクセスがerrotを拒否しました。
service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
service.PreAuthenticate = true;
ご協力いただきありがとうございます。または関連してもしなくてもよい
追加情報:Webサイトの
- アプリケーションプールIDは
NetworkService
です。 UserEmailAddress
変数は、私は上記のやってみたいものを達成するためにSystem.Security.Principal.WindowsIdentity.GetCurrent().Name
EDIT(2012年8月14日) に基づくADの検索から設定されている、私はHostingEnvironment.Impersonate
が必要とされていないと信じています。 代わりにExchangeService
のImpersonatedUserId
プロパティを使用する必要があります。 詳細here Exchange 2007を実行しているにもかかわらず、サービスアカウントが.Credentials
パラメータに渡すすべてのユーザーを偽装するためのpower shell commandのみがExchange 2010と互換性があるようです。
あなた@SilverNinjaをありがとう、私は本当 'service.UseDefaultCredentialsを=スワップアウト怖いと問題があるようです'まだ返し同じエラー。 公開されたWebサイトにVisual Studioデバッガを接続し、送信されている資格情報を相互に確認できるかどうかを試してみます。 – RichardD