7

Exchange Web サービスを介して Exchange 2010 サーバーに接続するための ASP.NET (.NET 3.5) Web サイトを作成しようとしています。認証するユーザー名、パスワード、およびドメインを定義すると EWS に接続できますが、 、可能であれば、ログインの詳細をコードに含めないようにします。

IIS では、私が持っているサイトの web.config で、サイトの統合 Windows 認証を有効にしました<authentication mode="Windows"/>

次のコードは、私が取り組んできたものです。

svc.UseDefaultCredentials = True
svc.Credentials = New WebCredentials()
svc.Url = New Uri(svcURL)

上記のコードを使用すると、次のメッセージが表示されます。

メールボックスを持たないアカウントとして要求を行う場合、識別フォルダー ID のメールボックスのプライマリ SMTP アドレスを指定する必要があります。

svc.Credentials = CredentialCache.DefaultNetworkCredentials(の代わりに)を使用しようとするとsvc.Credentials = New WebCredentials()、次のエラー メッセージが表示されます。

タイプ 'System.Net.SystemNetworkCredential' のオブジェクトをタイプ 'Microsoft.Exchange.WebServices.Data.ExchangeCredentials' にキャストできません。

前述のように、機能した唯一のことは、ユーザー ログインの詳細をハードコーディングして、認証するユーザー資格情報を定義することです。svc.Credentials = New WebCredentials("username","password","domain")

ASP.NET Web サイトに現在ログインしているユーザーの資格情報を使用して、EWS に対して認証できた人はいますか?

4

1 に答える 1

2

既定では、あるサーバー (ASP.NET サイトをホストしているサーバー) から別のサーバー (Exchange サーバー) にユーザーの資格情報を委任することはできません。これは「サーバー ホップ」と呼ばれ、Windows はセキュリティ対策として既定でこれを防止します。

これを回避するには、いくつかのオプションがあります。

  1. Kerberos の使用: Kerberos を有効にすると、Windows 認証を使用するときにサーバー間でユーザー資格情報を委任できます。私は謙虚な開発者にすぎないため、Kerberos の設定方法の正確な詳細はわかりませんが、システム管理者が支援してくれるかもしれません。私の知る限り、ユーザーの委任を許可するように ASP.NET サーバーをセットアップする必要があります。
  2. IIS アプリケーション プールのユーザー ID の設定: Kerberos がオプションでない場合は、ASP.NET サイトが実行されているアプリケーション プールの ID を変更できます。まず、IIS マネージャーで新しいアプリケーション プールを定義します。次に、そのアプリケーション プールの [詳細設定] ダイアログに移動し、Exchange サーバーへのアクセスを許可されているドメイン ユーザーに ID を設定します。アプリケーション プール ID の詳細については、http ://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx を参照してください。
  3. <identity> 要素の設定:何らかの理由でアプリケーション プールを変更できない場合は、web.config ファイルの <identity> 要素を使用して、ASP.NET Web サイトの偽装を試みることができます。ASP.NET では、資格情報をレジストリに保存するオプションが提供されるため、資格情報を web.config ファイルに直接配置する必要はありません。詳細はこちら: http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  4. <appSettings> 要素と暗号化の使用: 考えられる最後のオプションは、資格情報を通常の <appSettings> として web.config ファイルに入れ、<appSettings> セクション全体を暗号化することです。次に、AppSettingsReader クラスを使用してコードから appSettings を読み取るだけです。.NET を使用すると、すぐに web.config ファイルのセクションを暗号化でき、セクションが暗号化されていることに気付かずに設定を読み取ることができます。.NET が復号化を処理します。詳細はこちら: http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
于 2013-05-19T15:30:01.850 に答える