6

TFS2010APIを使用するASP.NETWebサイト内でパススルーまたは偽装認証を有効にしようとしています。

これはCassiniで正しく機能していますが、IIS 7.5(Windows 7)では問題が発生しています。

このテーマに関するこのブログ投稿を見つけて、次のことを試しました。

private static void Test()
{
    TfsTeamProjectCollection baseUserTpcConnection = 
            new TfsTeamProjectCollection(new Uri(Settings.TfsServer));
    
    // Fails as 'baseUserTpcConnection' isn't authenticated
    IIdentityManagementService ims = 
            baseUserTpcConnection.GetService<IIdentityManagementService>();
    
    // Read out the identity of the user we want to impersonate
    TeamFoundationIdentity identity = ims.ReadIdentity(
            IdentitySearchFactor.AccountName, 
            HttpContext.Current.User.Identity.Name,
            MembershipQuery.None, 
            ReadIdentityOptions.None);

    TfsTeamProjectCollection impersonatedTpcConnection = new 
            TfsTeamProjectCollection(new Uri(Settings.TfsServer), 
            identity.Descriptor);
}

カッシーニを使うときは、他に何も必要ありません

collection = new TfsTeamProjectCollection(new Uri(server));

web.config設定を有効にしました(そしてWindows認証モジュールをインストールしました):

<authentication mode="Windows"/>
<identity impersonate="true" />

私が見逃した明らかな何かがありますか?

4

2 に答える 2

7

解決策 1

これが委任方法です。Paul が指摘しているように、それは Active Directory 内の単一の設定です。

  1. [Active Directory ユーザーとコンピューター] コンソールのコンピューター ノードで IIS サーバーを見つけます。

  2. 委任タブをクリックし、2 番目のオプションを選択します。 広告

  3. IIS ルート フォルダに「キャッシュ」ディレクトリを作成します。

  4. 以下を web.config に追加します。

<appSettings>
<add key="WorkItemTrackingCacheRoot" value="C:\path-to-web-root\Cache\"/>
</appSettings>

  1. web.config に以下が含まれていることを確認してください。

<system.web>
<identity impersonate="true" />
</system.web>

  1. Windows 認証と偽装を有効にし、IIS 認証の他のすべてを無効にします。

IIS

解決策 2

上記の手順を回避する別の解決策は、アプリケーションを TFS:8080 サイトで新しいアプリケーションとして単純に実行することです。アプリが呼び出している Web サービスと同じコンテキストで実行しているため、ホップの問題は解消されます。

  • 新しいアプリ プールを作成し、ネットワーク ID を使用します。
  • アプリケーションの匿名認証がオフになっていることを確認してください
  • Windows認証がオンになっていることを確認してください。
  • <identity impersonate="true" />Web 構成に追加します。
于 2010-10-25T23:56:00.090 に答える
5

ここで古いDouble-Hop の問題にぶつかっているのだろうか?

于 2010-10-25T12:11:08.477 に答える