CSOM を使用して SharePoint Online サイトに直接接続するデスクトップアプリケーションがあります。ここでの問題は、この要求がプロキシ サーバー経由で行われる必要があることです。これまでに行ったことは、資格情報を含むプロキシ サーバーの設定を ClientContext の ExecutingWebRequest イベントに渡したことです。ただし、問題は SharePointOnlineCredentials クラスです。ClientContext の資格情報を設定する必要があります。このクラスのコンストラクターにユーザー ID とパスワードを渡すと、資格情報を検証するように SP に内部的に要求されます。現在、プロキシ ID/パスワードをこのクラスに設定/渡すことができないため、プロキシ サーバーが IdcrlException を取得している要求を拒否しています。以下は、私が現在使用しているサンプルコードです。
SecureString passWord = new SecureString();
password.ToList().ForEach(passWord.AppendChar);
SP.ClientContext ctx = new SP.ClientContext(targetURL);
ctx.ExecutingWebRequest += (sen, args) =>
{
System.Net.WebProxy myProxy = new System.Net.WebProxy();
myProxy.Address = new Uri(this.proxyUrl);
myProxy.Credentials = new System.Net.NetworkCredential(this.proxyUserName, this.proxyPassword);
args.WebRequestExecutor.WebRequest.Proxy = myProxy;
};
//This is the line which is causing the issue.
ctx.Credentials = new SP.SharePointOnlineCredentials(this.userName, passWord);
このコードは、認証を必要としないプロキシ サーバーで正常に実行されることが期待されます。構成できないのは、この SharePointOnlineCredentials です。また、SharePointOnlineCredentials の代わりに NetworkCredentials を使用しようとしました。コードは正常にコンパイルされますが、SP は Forbidden 例外をスローしています。