2

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 例外をスローしています。

4

1 に答える 1