4

UserProfileManager を許可されていないユーザーとして使用するという問題があります。

問題: ユーザーは「ユーザー プロファイルの管理」権限を持っていませんが、それでも UserProfileManager を使用したいと考えています。SPSecurity.RunWithElevatedPrivileges を使用するという考えは、UserProfileManager が SSP に対して承認するように見えるため、機能していないようです。

            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(inputWeb.Site.ID))
                {
                    ServerContext ctx = ServerContext.GetContext(site);
                    UserProfileManager upm = new UserProfileManager(ctx,true);
                    UserProfile u = upm.GetUserProfile(userLogin);
                    DepartmentName = u["Department"].Value as string;
                }
            });

これは、「管理者モードを使用するには、ユーザー プロファイルの管理者権限を管理する必要があります」という例外で、「新しい UserProfileManager」行で失敗します。

私の知る限り、RunWithElevatedPrivileges は AppPool ID に戻ります。WindowsIdentity.GetCurrent().Name は "NT AUTHORITY\network service" を返し、そのアカウントにユーザー プロファイルの管理権限を与えましたが、うまくいきませんでした。

site.RootWeb.CurrentUser.LoginName は、RunWithElevatedPrivileges 内で作成されたサイトの SHAREPOINT\system を返します。これは c の有効な Windows アカウントではありません。

それを行う方法さえありますか?すべてのユーザーに「ユーザー プロファイルの管理」権限を付与したくはありませんが、ユーザー プロファイル (部門、国、直属の部下) からデータを取得したいだけです。何か案は?

4

4 に答える 4

4

設定が必要な権限は、実際には共有サービス プロバイダにあります。

  1. 中央管理に移動します
  2. 共有サービス プロバイダーに移動する
  3. [ユーザー プロファイルと個人用サイト] の下で、[個人用設定サービスのアクセス許可] に移動します。
  4. アカウントがまだ存在しない場合は、サイトのアプリ ドメインが実行されているアカウントを追加します。
  5. そのユーザーにユーザー プロファイルの管理権限を付与します。

Network Service アカウントでアプリケーション プールを実行していることに気付きました。私は自分のサイトに同じ機能を実装しました。ただし、アプリケーション プールは Windows アカウントでホストされていました。ただし、なぜこれが違いを生むのかはわかりません。

于 2008-09-17T13:21:41.613 に答える
2

私が実際にこれを達成するために管理した2つの方法があります:

  1. UserProfileManager を使用するコードを Web サービス層の背後に置きます。Web サービスは、ユーザー プロファイル サービスにアクセスできるアプリケーション プール ID を使用する必要があります。
  2. 次の記事で説明されている偽装手法を使用してください: http://www.dotnetjunkies.com/WebLog/victorv/archive/2005/06/30/128890.aspx
于 2008-10-02T09:57:40.353 に答える
2

回答ありがとうございます。1 つの注意点: アプリケーション プールをドメイン アカウントではなく「ネットワーク サービス」として実行すると、失敗します。

ただし、とにかくドメイン アカウントを使用することをお勧めします (テスト サーバーではネットワーク サービスを使用しましたが、ドメイン アカウントに変更すると機能しました)。

于 2008-10-02T11:59:52.743 に答える