<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">All your TFServer are belong to us</title><subtitle type="html">Somebody set up us the server (with HTTPS + ClientCert) !!</subtitle><id>http://blogs.msdn.com/b/tsyang/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/tsyang/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/tsyang/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2008-03-24T22:21:00Z</updated><entry><title>Team Foundation Server Proxy 2008 Self-Help Troubleshooting Guide</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/tsyang/archive/2009/02/05/team-foundation-server-proxy-2008-self-help-troubleshooting-guide.aspx" /><id>http://blogs.msdn.com/b/tsyang/archive/2009/02/05/team-foundation-server-proxy-2008-self-help-troubleshooting-guide.aspx</id><published>2009-02-06T01:16:00Z</published><updated>2009-02-06T01:16:00Z</updated><content type="html">&lt;P&gt;In addition to &lt;A href="http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx" mce_href="http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx"&gt;How TFS Proxy 2008 works&lt;/A&gt;&amp;nbsp;and &lt;A href="http://blogs.msdn.com/tsyang/archive/2008/11/07/team-foundation-server-proxy-2008-faq.aspx" mce_href="http://blogs.msdn.com/tsyang/archive/2008/11/07/team-foundation-server-proxy-2008-faq.aspx"&gt;TFS Proxy 2008 FAQ&lt;/A&gt;, this post focuses on self-help troubleshooting TFS Proxy 2008 issues.&amp;nbsp; The goal of this post is to guide the reader to troubleshoot simple but very common Proxy issues, or at least to give the reader a general idea what could be wrong.&amp;nbsp; You may still need to seek for professional help if the issues with your TFS Proxy setup is beyond the scope of this self-help guide.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Make sure Proxy service account and its password are valid.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Make sure Proxy service account is not disabled.&lt;/LI&gt;
&lt;LI&gt;Make sure Proxy service account's password is not expired.&lt;/LI&gt;
&lt;LI&gt;Update Proxy service account password in Proxy AppPool with &lt;FONT face="courier new,courier"&gt;TfsAdminUtil.exe&lt;/FONT&gt;.&amp;nbsp; You can find this in the &lt;FONT face="courier new,courier"&gt;Tools&lt;/FONT&gt; folder under TFS or TFS Proxy installation folder.&lt;/LI&gt;
&lt;LI&gt;If your TFS setup is in a domain environment, you might want to consider &lt;A href="http://blogs.msdn.com/tsyang/archive/2008/06/26/run-team-foundation-server-proxy-2008-with-network-service-account.aspx" mce_href="http://blogs.msdn.com/tsyang/archive/2008/06/26/run-team-foundation-server-proxy-2008-with-network-service-account.aspx"&gt;running TFS Proxy 2008 with a network service account&lt;/A&gt;&amp;nbsp;(It is a convenient trick but it is not officially supported by Microsoft.)&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Make sure Proxy service account is allowed and not denied &lt;FONT face="courier new,courier"&gt;GENERIC_READ&lt;/FONT&gt; permission on TFServer.&amp;nbsp; This is a bit complicated and&amp;nbsp;will be&amp;nbsp;explained in a paragraph below.&lt;/LI&gt;
&lt;LI&gt;Make sure &lt;FONT face="courier new,courier"&gt;proxy.config&lt;/FONT&gt; contains the right&amp;nbsp;TFServer address.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Make sure the &lt;FONT face="courier new,courier"&gt;Server&lt;/FONT&gt; entries in &lt;FONT face="courier new,courier"&gt;proxy.config&lt;/FONT&gt; use this format &lt;FONT face="courier new,courier"&gt;http://&lt;EM&gt;serverAddress&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/&lt;/FONT&gt; instead of the old format used by TFS Proxy 2005.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Make sure&amp;nbsp;TFServer and Proxy addesses can be correctly resolved and AppPool is running.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;One&amp;nbsp;easy way to test this is&amp;nbsp;to try the following steps:&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;From a client machine, open &lt;FONT face="courier new,courier"&gt;http://&lt;EM&gt;proxyAddress&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/VersionControlProxy/v1.0/ProxyStatistics.asmx&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;From a client machine, open &lt;FONT face="Courier New"&gt;http://server&lt;EM&gt;Address&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/VersionControl/v1.0/ProxyStatistics.asmx&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;From Proxy server, open &lt;FONT face="Courier New"&gt;http://server&lt;EM&gt;Address&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/VersionControl/v1.0/ProxyStatistics.asmx&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;If everything is setting up correctly, for each trial you should see a web page with links such as "Service Description" and "QueryProxyStatistics".&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;The System Event Log (eventvwr) on the proxy and server machine is another place you can look for issues that block your TFS from working properly.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;There is also a troubleshooting guide for TFS Proxy on MSDN: Troubleshooting Team Foundation Server Proxy &lt;A href="http://msdn.microsoft.com/en-us/library/ms400681.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms400681.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;The story behind "Make sure Proxy service account is allowed and not denied &lt;FONT face="courier new,courier"&gt;GENERIC_READ&lt;/FONT&gt; permission on TFServer."&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;First, three things to know:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;TFS permissions can only be assigned to identities recognized by TFS.&lt;/LI&gt;
&lt;LI&gt;A&amp;nbsp;user/group inherits permission settings from its parent group.&lt;/LI&gt;
&lt;LI&gt;Deny overrules Allow.&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;In order to make Proxy work, we need to make sure Proxy service account is recognized by TFServer and is allowed but not denied &lt;FONT face="courier new,courier"&gt;GENERIC_READ&lt;/FONT&gt; permission.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;U&gt;Preparation&lt;/U&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;In a workgroup setup, you must have a local machine account on TFServer machine, which must have the same username and password as Proxy service account's.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Locate &lt;FONT face="courier new,courier"&gt;Tools\TfsSecurity.exe&lt;/FONT&gt; under your TFS installation folder.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;U&gt;The easy way&lt;/U&gt;:&lt;/P&gt;
&lt;P mce_keep="true"&gt;Because GENERIC_READ is allowed on the "TF Valid Users" group, therefore we can create a server-level group and add Proxy service account as a member so that the server-level group inherits GENERIC_READ from "TF Valid Users" and Proxy service account inherits GENERIC_READ from the server-level group.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Create a server-level group.&amp;nbsp; Let's call it "Proxy Service Accounts"&lt;/DIV&gt;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;FONT face="courier new,courier"&gt;TfsSecurity /server:http://&lt;EM&gt;serverAddress&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/ /gcg "Proxy Service Accounts"&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Add Proxy service account as a member&lt;/DIV&gt;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;FONT face="Courier New"&gt;TfsSecurity /server:http://&lt;EM&gt;serverAddress&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/ /g+ "Proxy Service Accounts" &lt;EM&gt;domain&lt;/EM&gt;\&lt;EM&gt;proxyServiceAccount&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Done!&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&lt;U&gt;The hard way&lt;/U&gt;:&lt;/P&gt;
&lt;P mce_keep="true"&gt;If the easy way did not work, then most likely GENERIC_READ is either explicitly and effectively denied for Proxy service account.&amp;nbsp; To find out where GENERIC_READ is explicitly denied, do&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT face="Courier New"&gt;TfsSecurity /server:http://&lt;EM&gt;serverAddress&lt;/EM&gt;:&lt;EM&gt;port&lt;/EM&gt;/ /acl $NAMESPACE&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Keep in mind that a user/group inherits permission settings from its parent group.&amp;nbsp; Check whether Proxy service account inherits "Deny GENERIC_READ" from its parent or grand-parent groups.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;U&gt;Update&lt;/U&gt;:&lt;/P&gt;
&lt;P mce_keep="true"&gt;May 20, 2009: Corrected test links to&amp;nbsp;server's proxy statistic page.&amp;nbsp; Thanks to&amp;nbsp;&lt;A id=ctl00___ctl00___ctl01___Comments___Comments_ctl04_NameLink title="Len Ocin" href="http://www.lenocin.com/" rel=nofollow&gt;&lt;FONT color=#f4bf33&gt;Len Ocin&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;for pointing it out!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9399984" width="1" height="1"&gt;</content><author><name>tsyang</name><uri>http://blogs.msdn.com/tsyang/ProfileUrlRedirect.ashx</uri></author><category term="Proxy" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/Proxy/" /><category term="2008" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/2008/" /></entry><entry><title>Team Foundation Server Proxy 2008 FAQ</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/tsyang/archive/2008/11/07/team-foundation-server-proxy-2008-faq.aspx" /><id>http://blogs.msdn.com/b/tsyang/archive/2008/11/07/team-foundation-server-proxy-2008-faq.aspx</id><published>2008-11-07T23:39:00Z</published><updated>2008-11-07T23:39:00Z</updated><content type="html">&lt;P&gt;Since&amp;nbsp;posting&amp;nbsp;&lt;A class="" href="http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx" mce_href="http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx"&gt;How TFS Proxy 2008 works&lt;/A&gt;, I have&amp;nbsp;got a bunch of questions regarding TFS proxy.&amp;nbsp; I would like to share them with you (with my answers, of course)&amp;nbsp;:)&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Q: How do I configure TFS Proxy?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A: &lt;A href="http://msdn.microsoft.com/en-us/library/ms253156.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms253156.aspx&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Q: I got this error message:&amp;nbsp;"source control proxy is not responding, so the request will be sent to the main server.&amp;nbsp; Please verify your settings." -- what happens now?&lt;/LI&gt;
&lt;LI&gt;A: As long as the main server is functioning and reachable, your command/operation will continue to execute and&amp;nbsp;will deliver the same results.&amp;nbsp; Version control proxy is a mean to speed things up&amp;nbsp;by caching data locally on the proxy.&amp;nbsp; If TFS Proxy cannot server client's download request (for any reason), client will automatically fall back and download from the main server.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Q: Can I install TFS AT and Proxy on the same machine?&lt;/LI&gt;
&lt;LI&gt;A: Technically, yes, you can, but it is known that the proxy cache statistics&amp;nbsp;may&amp;nbsp;show incorrect numbers.&amp;nbsp; Practically, there is no point in putting both AT and Proxy on the same machine.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Q: Can TFS Proxy cache work items?&lt;/LI&gt;
&lt;LI&gt;A: No.&amp;nbsp; For TFS 2005/2008, TFS Proxy&amp;nbsp;caches version control data only.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Q: Can TFS Proxy act as a surrogate server or a fail-over backup server?&lt;/LI&gt;
&lt;LI&gt;A: No.&amp;nbsp; TFS Proxy merely caches version control data.&amp;nbsp; Authentication and security checks are still handled by the server.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Q: Any recommendation for proxy hardware?&lt;/LI&gt;
&lt;LI&gt;A: It is hard to say without knowing the specifics (the size of your organization and projects, number of people in your away&amp;nbsp;teams, etc)&amp;nbsp; However, the bottleneck will be disk space, disk I/O performance,&amp;nbsp;and network bandwidth.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Update: Brian Harry's&amp;nbsp;blog post on TFS hardware recommendations in general:&amp;nbsp;&lt;A href="http://blogs.msdn.com/bharry/archive/2007/10/18/tfs-2008-system-recommendations.aspx"&gt;http://blogs.msdn.com/bharry/archive/2007/10/18/tfs-2008-system-recommendations.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Q: When do I need a TFS proxy?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A: TFS proxy is good for these scenarios&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Cache version control data locally so it takes less time for your away team, who have a slow connection to the main server, to sync their workspace.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Reduce&amp;nbsp;disk I/O load on the main server by serving download requests so your main server can concentrate on other things (processing branch merge requests, responding to work item queries, ... etc)&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Q: Say I have two away teams A, B.&amp;nbsp; They both have slow connections to the main server, but they have &lt;EM&gt;ok&lt;/EM&gt; connection between them.&amp;nbsp; Is it possible to have team A's proxy downloading files from the main server and have team B's proxy downloading files from team A's proxy?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A: No.&amp;nbsp; TFS 2005/2008 Proxy can only download from the main server.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Q: Why is my TFS proxy just sitting there and not caching files?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A: TFS proxy does not prefetch files.&amp;nbsp; It caches version control items &lt;EM&gt;after&lt;/EM&gt; a client, which is configured to use that particular proxy, made a download request.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Q: How do I assess my TFS proxy utilization?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A: You can look at the cache hit rates ( &lt;A href="http://msdn.microsoft.com/en-us/library/ms400683.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms400683.aspx&lt;/A&gt;&amp;nbsp;).&amp;nbsp; As a rule of thumb, the more people working in the same code branch, the bigger performance gain from TFS Proxy.&amp;nbsp; You can also retrieve proxy statistics programmically&amp;nbsp;with this class Microsoft.TeamFoundation.Client.ProxyStatistics.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Q: How do I find out who is/isn't using my TFS proxy?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A: You need to first enable TFS activity logging and query the logging for users who sends download requests directly to the main server -- I will try to find time to write another blog post to give a better detailed answer on this one.&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Update: Grant Holliday has written a blog post on this subject: &lt;A href="http://blogs.msdn.com/granth/archive/2008/09/16/how-many-users-are-not-using-a-tfs-proxy-server.aspx"&gt;http://blogs.msdn.com/granth/archive/2008/09/16/how-many-users-are-not-using-a-tfs-proxy-server.aspx&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9053167" width="1" height="1"&gt;</content><author><name>tsyang</name><uri>http://blogs.msdn.com/tsyang/ProfileUrlRedirect.ashx</uri></author><category term="Proxy" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/Proxy/" /><category term="2008" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/2008/" /></entry><entry><title>Run Team Foundation Server Proxy 2008 with Network Service Account</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/tsyang/archive/2008/06/26/run-team-foundation-server-proxy-2008-with-network-service-account.aspx" /><id>http://blogs.msdn.com/b/tsyang/archive/2008/06/26/run-team-foundation-server-proxy-2008-with-network-service-account.aspx</id><published>2008-06-27T00:55:00Z</published><updated>2008-06-27T00:55:00Z</updated><content type="html">&lt;P&gt;Although TFS Proxy is supposed to run as by a service user accont, however, there is a way to get around it if your setup is on a domain.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;This is not officially supported&amp;nbsp;by Microsoft&lt;/STRONG&gt;, but it works.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Background&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;It is recommended that you read &lt;A href="http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx" mce_href="http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx"&gt;http://blogs.msdn.com/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx&lt;/A&gt;&amp;nbsp;before proceeding.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Instruction&lt;/U&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Install proxy with a valid&amp;nbsp;user account (for example, yours)&lt;/LI&gt;
&lt;LI&gt;(Optional but recommended) Do not yet add your targeting TFServer address to &lt;FONT face="courier new,courier"&gt;proxy.config&lt;/FONT&gt;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;This prevents users from using this proxy before you can change the service account.&amp;nbsp; This will save you some headache (which I could write another short post to explain...)&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Locate &lt;FONT face="courier new,courier"&gt;tfsadminutil.exe&lt;/FONT&gt; from where you install the proxy to&lt;/LI&gt;
&lt;LI&gt;Run &lt;FONT face="courier new,courier"&gt;tfsadminutil changeaccount /proxy &lt;EM&gt;currentServiceAccount&lt;/EM&gt; "NT Authority\Network Service"&lt;/FONT&gt;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;&lt;EM&gt;currentServiceAccount&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt; refers to the account you entered at the beginning&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Add your targeting TFServer address to &lt;FONT face="Courier New"&gt;proxy.config&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face="courier new,courier"&gt;iisreset&lt;/FONT&gt; the proxy server machine&lt;/LI&gt;
&lt;LI&gt;Ask your TFServer admin to add this account &lt;FONT face="courier new,courier"&gt;"proxyMachineDomain\proxyMachineName$"&lt;/FONT&gt; to the TFS group where he/she manages proxy service accounts&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;"proxyMachineDomain\proxyMachineName$"&lt;/FONT&gt;&lt;FONT face=Arial&gt; is your proxy machine's machine account.&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Done.&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&lt;U&gt;Update&lt;/U&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Thanks to &lt;A class="" href="http://blogs.msdn.com/jmanning/" mce_href="http://blogs.msdn.com/jmanning/"&gt;James Manning&lt;/A&gt; for pointing it out that this workaround only works in a domain environment.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8658618" width="1" height="1"&gt;</content><author><name>tsyang</name><uri>http://blogs.msdn.com/tsyang/ProfileUrlRedirect.ashx</uri></author><category term="Proxy" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/Proxy/" /><category term="2008" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/2008/" /></entry><entry><title>How Team Foundation Server Proxy 2008 works</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx" /><id>http://blogs.msdn.com/b/tsyang/archive/2008/03/24/how-team-foundation-server-proxy-2008-works.aspx</id><published>2008-03-25T05:21:00Z</published><updated>2008-03-25T05:21:00Z</updated><content type="html">&lt;DIV class=title&gt;Ever wondering how TFS Proxy works?&amp;nbsp; While this MSDN article "Team Foundation Server Proxy and Source Control" ( &lt;A href="http://msdn2.microsoft.com/en-us/library/ms252490.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms252490.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms252490.aspx&lt;/A&gt; )&amp;nbsp;provides a great overview, this blog post will add an end-to-end story for TFS users who likes to dig into technical details.&lt;/DIV&gt;
&lt;P&gt;&lt;U&gt;Table of Contents&lt;/U&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Workflow&lt;/LI&gt;
&lt;LI&gt;Highlights&lt;/LI&gt;
&lt;LI&gt;In other words&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;U&gt;Workflow&lt;/U&gt;:&lt;/P&gt;
&lt;P&gt;Let's see what happens among a&amp;nbsp;user (CLIENT), TFServer (SERVER) and TFS Proxy (PROXY) when the user is trying to download a file from TFServer version control repository.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;CLIENT authenticates with SERVER.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;SERVER terminates connection if authentication failed.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;CLIENT sends a file download request to SERVER.&lt;/LI&gt;
&lt;LI&gt;SERVER checks CLIENT's read permission on the requested file.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;SERVER reports "file does not exist" to CLIENT&amp;nbsp;if CLIENT has no read permission.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;SERVER sends a download ticket for the requested file&amp;nbsp;to CLIENT.&lt;/LI&gt;
&lt;LI&gt;CLIENT sends the download ticket to PROXY and wait for PROXY to return the requested file.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Update: If PROXY does not return the requested file&amp;nbsp;within a certain amount of time for any reason, CLIENT will use the download ticket to download directly from SERVER.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;PROXY checks&amp;nbsp;whether the requested file is already cached.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;PROXY returns the requested file to CLIENT if it is already cached.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;PROXY service account authenticates with SERVER&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;SERVER terminates connection if authentication failed.&amp;nbsp; PROXY reports error to CLIENT.&amp;nbsp; CLIENT will download directly from SERVER.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;PROXY asks SERVER for the location of VersionControl services.&lt;/LI&gt;
&lt;LI&gt;SERVER checks whether PROXY service account has read permission on server-level information.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;SERVER terminates connection if PROXY service account has no read permission on server information.&amp;nbsp; PROXY reports error to CLIENT.&amp;nbsp; CLIENT will download directly from SERVER.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;SERVER tells PROXY where VersionControl services are.&lt;/LI&gt;
&lt;LI&gt;PROXY uses CLIENT's download ticket to download the requested file from SERVER.&lt;/LI&gt;
&lt;LI&gt;PROXY caches the requested file.&lt;/LI&gt;
&lt;LI&gt;PROXY returns requested file to CLIENT.&amp;nbsp; End of story.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;U&gt;Highlights&lt;/U&gt;:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;SERVER always checks repository read permission against CLIENT, not PROXY service account.&lt;/LI&gt;
&lt;LI&gt;SERVER always checks server-level information read permission against PROXY service account; and that is the only permission PROXY service account ever needs.&lt;/LI&gt;
&lt;LI&gt;PROXY can save SERVER resources by serving CLIENT's downloading request when the requested file is already cached.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;U&gt;In other words&lt;/U&gt;:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;PROXY and SERVER are binded at the server-level, not team project level.&lt;/LI&gt;
&lt;LI&gt;PROXY does not act as a surrogate for SERVER; PROXY only does caching and all permission checking is done by SERVER.&lt;/LI&gt;
&lt;LI&gt;PROXY service account can simply be placed in a server-level group, e.g. "[Server]\Proxy Service Accounts", without any extra security configuration.&amp;nbsp; This effectively grants PROXY service account read permission&amp;nbsp;on server-level information.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Adding PROXY service account to either TFServer Admin group, TFServer service account group, or any team project group will also grant PROXY service account read permission on server-level infromation; however, this practice is not recommended because it gives PROXY service account more permissions than it needs.&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8333888" width="1" height="1"&gt;</content><author><name>tsyang</name><uri>http://blogs.msdn.com/tsyang/ProfileUrlRedirect.ashx</uri></author><category term="Proxy" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/Proxy/" /><category term="2008" scheme="http://blogs.msdn.com/b/tsyang/archive/tags/2008/" /></entry></feed>