匿名アクセス時の Client OM の制限解除方法

投稿者: | 2012年10月22日

Client OM を使って匿名アクセスをする場合、利用できるメソッドに制限があります。

例えば標準状態では、以下のコードは22行目を実行するとエラーとなります。

 






















 

エラーの内容は以下の通り。

 

Microsoft.SharePoint.Client.ServerException: 種類 "List"、ID "{d89f0b18-614e-4b4a-bac0-fd6142b55448}" のメソッド "GetItems" は、サーバーで管理者によってブロックされています。

 

GetItems メソッドの使用が管理者によりブロックされているとのこと。

このブロックを解除することで GetItems メソッドが使えるようになります。

 

では、どこでブロックの設定がされているのかというと、SPWebApplication.ClientCallableSettings プロパティになります。

このプロパティでは Client OM 利用時の制限事項がいくつか定義されており、その中で匿名アクセスに関するものが、ClientCallableSettings.AnonymousRestrictedTypes で設定されています。

 

まずは、ClientCallableSettings.AnonymousRestrictedTypes の初期状態を見てみます。

以下の PowerShell スクリプトを実行します。

 


 

実行結果は以下のようになります。

 

















 

これを見ると、2行目で SPList.GetItems メソッドが制限されていることがわかります。

他にも、SPSite、SPWeb でも制限されているメソッドがあるようです。

 

では次に、制限の解除をしたいと思います。

先ほどのスクリプトの続きで、以下の PowerShell スクリプトを実行します。

 


 

うんともすんとも言いませんが、上記スクリプト実行後にもう一度 ClientCallableSettings.AnonymousRestrictedTypes を出力してみると、 上記出力結果の2行目にあった GetItems がなくなっていることが確認できます。

 

















 

 

これで設定完了です。

一番最初に書いたプログラムを実行すると、今度はエラーは出ず無事アイテムを取得できるはずです。

 

 

参考情報:

MSDN Blog
http://blogs.msdn.com/b/bobgerman/archive/2012/01/10/anonymous-client-access-to-sharepoint-2010.aspx

Will Code for Nuts
http://www.codefornuts.com/2010/05/anonymously-accessing-list-items.html