2

権限に関する調査結果を確認しようとしています。

コンソール アプリケーションまたは WinForm アプリケーションから SharePoint オブジェクト モデルにアクセスするには、アプリケーションを実行しているユーザーが、対象の Web アプリケーションのコンテンツ データベースに対する db_admin 権限を持っている必要があります。

ASP.NET アプリケーション内で (SPFarm.Local.Solutions.Add の呼び出しと同様に) Microsoft.SharePoint.Administration を使用するには、次の条件を満たす必要があります。

  • 呼び出しは、次のように RunWithElevatedPrivileges でラップする必要があります。

SPSecurity.RunWithElevatedPrivileges(delegate() { 実行するコード } );

  • ASP.NET ページにアクセスするユーザーは、ファーム管理者グループに属している必要があります (ページは _layouts で実行されています)。

  • 問題の Web アプリケーションのアプリケーション プールの ID のユーザーは、ファーム管理者グループにも属している必要があります。

この情報は正しいように見えますか?

4

4 に答える 4

2

はい。ただし、Webサービスコード内でRunWithElevated Privilegesを使用して機能コードを呼び出すと、Webサービスを実行しているIDがバイパスされ、代わりにSPFarmAdminユーザーを使用してコードが実行されます。

または、中央管理サイトと同じドメインアカウントを使用するアプリプールでWebサービスをホストし、Webサービスへの匿名アクセスを許可します。これは、内部使用に対してのみ安全であり、Webサービスが常に昇格されたアクセス許可を持っていることを意味します。

于 2009-01-30T16:40:34.727 に答える
2

編集: マイケルのコメントに反して、このアプリは SP ファーム内から実行されることはないと想定しています。

このアプローチは、サポートされていない SharePoint OM の使用方法であるため、まったくお勧めしません。

SP ファーム上にあり、OM を使用する Web サービスを作成し、Web サービス メソッドにアクセスして必要な機能を実行する方がはるかに優れています。

また、すぐに使える SharePoint Web サービスを確認することもできます。

RunWithElevatedPrivileges はあなたのシナリオでは機能しません。SP ファームでコードを実行する場合、通常はファーム管理者アカウントである SP アプリケーション プール ID にフォールバックする基本 indetity が必要になるとは思いません。

これらすべてについて修正されたことをうれしく思いますが、確かに私の環境では、問題に対する非標準でサポートされていないアプローチに投資することは賢明ではありません.

于 2009-01-30T13:29:42.273 に答える
1

お詫びホビーマン、私はあなたが返事をするのを見たことがありません。

RunWithElevatedPermissionsを使用する場合は、ファーム管理者アカウントになりすましているため、Webサービスを実行するユーザーは関係ありません。

さらに、Webサービス内で独自のなりすましを行い、必要なユーザーになりすますことができます。

基本的に、Webサービスが特定のアプリケーションプール内で実行されている場合、Webサービスはアプリプールが実行されているIDで実行されます。これは物事を明確にしますか?

于 2009-02-11T15:05:56.863 に答える
1

はい、Web サービスには適切なアクセス権が必要ですが、ローカルで実行されている Web サービスを使用すると、これを簡単に制御できます。

ただし、アプリが常にサーバー上で実行されていると言う場合、RunWithElevatedPrivileges を使用すると、実質的にそのコードを SPFarmAdmin として実行しているため、アクセス許可の問題が解決されます (アプリ プール ID が正しく構成されている限り)。

注: このアプローチは、特注の Web サービス、またはコンソール アプリケーションや Windows フォームなどのクライアント アプリで使用できます。

于 2009-01-30T13:48:48.270 に答える