2012-03-05 17 views
3

私の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が必要とされていないと信じています。 代わりにExchangeServiceImpersonatedUserIdプロパティを使用する必要があります。 詳細here Exchange 2007を実行しているにもかかわらず、サービスアカウントが.Credentialsパラメータに渡すすべてのユーザーを偽装するためのpower shell commandのみがExchange 2010と互換性があるようです。

答えて

0

NetworkCredentialの代わりにWebCredentialsを使用してください。related SO postを参照してください。 `` service.Credentials =新しいWebCredentials()のために; EWSとAutoDiscover + NetworkCredentials

+1

あなた@SilverNinjaをありがとう、私は本当 'service.UseDefaultCredentialsを=スワップアウト怖いと問題があるようです'まだ返し同じエラー。 公開されたWebサイトにVisual Studioデバッガを接続し、送信されている資格情報を相互に確認できるかどうかを試してみます。 – RichardD

関連する問題