<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Microsoft Forefront UAG Product Team Blog</title><link>http://blogs.technet.com/b/edgeaccessblog/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>KB: DirectAccess Manage Out fails for any non-ICMP traffic in Forefront Unified Access Gateway 2010</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/05/15/kb-directaccess-manage-out-fails-for-any-non-icmp-traffic-in-forefront-unified-access-gateway-2010.aspx</link><pubDate>Tue, 15 May 2012 17:19:43 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3498139</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3498139</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/05/15/kb-directaccess-manage-out-fails-for-any-non-icmp-traffic-in-forefront-unified-access-gateway-2010.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2663354"&gt;&lt;img title="image" border="0" alt="image" align="left" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-81-metablogapi/6052.image_5F00_05282D91.png" width="85" height="84" /&gt;&lt;/a&gt;Here’s a new Knowledge Base article we published. This one describes an issue where DirectAccess Manage Out fails for any non-ICMP traffic in UAG 2010.&lt;/p&gt;  &lt;p&gt;=====&lt;/p&gt;  &lt;h5&gt;Symptoms&lt;/h5&gt;  &lt;p&gt;DirectAccess Manage Out does not work for any non-ICMP traffic in Microsoft Forefront Unified Access Gateway 2010. Outbound connections to external DirectAccess client machines fail for any traffic except for ICMP. If IPsec auditing is enabled you may see the following error when attempting to access the DirectAccess client:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4984 &amp;quot;An IPSec extended mode negotiation failed&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;h5&gt;Cause&lt;/h5&gt;  &lt;p&gt;This issue can be caused by custom security policies regarding the local security rights for DirectAccess Manage-Out server and clients (e.g. modifying the setting &amp;quot;Access this computer from the network&amp;quot;).&lt;/p&gt;  &lt;p&gt;Manage-out connections require the ability of the source computer account and user account to authenticate IPsec connections to the remote DirectAccess client. Even though the IPsec tunnel is established from the DirectAccess server to client, the authentication occurs based on the internal source machine/account (impersonation).&lt;/p&gt;  &lt;p&gt;The security policy for “Access this computer from network” controls the ability to authenticate and access system services on remote computers. This source machine/account must have this right granted for the remote resources for the DirectAccess Manage-Out capability to function. If the DirectAccess server machine account and the machine account of the internal source server used in impersonation do not have permissions to access the DirectAccess client machine from the network then IPsec authentication failures will occur.&lt;/p&gt;  &lt;p&gt;Changes had been made to the local security policy which altered the default permissions for this access right. Everyone and Users groups were removed from the local security setting “Access this computer from network”.&lt;/p&gt;  &lt;h5&gt;Resolution&lt;/h5&gt;  &lt;p&gt;Reset the Local Security Setting for &amp;quot;Access this computer from the network&amp;quot; to the default configuration. By default this includes the following groups: Administrators, Backup Operators, Everyone, Users. The default setting is the only configuration which has been tested and verified for DirectAccess Manage Out connectivity.&lt;/p&gt;  &lt;h5&gt;More Information&lt;/h5&gt;  &lt;p&gt;2663354 - Client, service, and program incompatibilities that may occur when you modify security settings and user rights assignments : &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;823659"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;823659&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=====&lt;/p&gt;  &lt;p&gt;For the most current version of this article please see the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2663354"&gt;2704138 - DirectAccess Manage Out fails for any non-ICMP traffic in Forefront Unified Access Gateway 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;J.C. Hornbeck&lt;/b&gt; &lt;strong&gt;| System Center &amp;amp; Security Knowledge Engineer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#c0504d"&gt;Get the latest System Center news on&lt;/font&gt; &lt;/b&gt;&lt;a href="https://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;b&gt;Facebook&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;font color="#c0504d"&gt;and&lt;/font&gt; &lt;/b&gt;&lt;a href="https://twitter.com/#!/MS_SystemCenter"&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;img title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image001_64a4101d-1898-43ad-8493-b15123a8f037.gif" width="89" height="21" /&gt;&lt;/a&gt; &lt;a href="http://www.twitter.com/MS_SystemCenter"&gt;&lt;img title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image002_e463ef66-6372-4614-ad1b-a2e20e16de5f.gif" width="89" height="21" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;App-V Team blog: &lt;a href="http://blogs.technet.com/appv/"&gt;http://blogs.technet.com/appv/&lt;/a&gt;     &lt;br /&gt;ConfigMgr Support Team blog: &lt;a href="http://blogs.technet.com/configurationmgr/"&gt;http://blogs.technet.com/configurationmgr/&lt;/a&gt;     &lt;br /&gt;DPM Team blog: &lt;a href="http://blogs.technet.com/dpm/"&gt;http://blogs.technet.com/dpm/&lt;/a&gt;     &lt;br /&gt;MED-V Team blog: &lt;a href="http://blogs.technet.com/medv/"&gt;http://blogs.technet.com/medv/&lt;/a&gt;     &lt;br /&gt;Orchestrator Support Team blog: &lt;a href="http://blogs.technet.com/b/orchestrator/"&gt;http://blogs.technet.com/b/orchestrator/&lt;/a&gt;     &lt;br /&gt;Operations Manager Team blog: &lt;a href="http://blogs.technet.com/momteam/"&gt;http://blogs.technet.com/momteam/&lt;/a&gt;     &lt;br /&gt;SCVMM Team blog: &lt;a href="http://blogs.technet.com/scvmm"&gt;http://blogs.technet.com/scvmm&lt;/a&gt;     &lt;br /&gt;Server App-V Team blog: &lt;a href="http://blogs.technet.com/b/serverappv"&gt;http://blogs.technet.com/b/serverappv&lt;/a&gt;     &lt;br /&gt;Service Manager Team blog: &lt;a href="http://blogs.technet.com/b/servicemanager"&gt;http://blogs.technet.com/b/servicemanager&lt;/a&gt;     &lt;br /&gt;System Center Essentials Team blog: &lt;a href="http://blogs.technet.com/b/systemcenteressentials"&gt;http://blogs.technet.com/b/systemcenteressentials&lt;/a&gt;     &lt;br /&gt;WSUS Support Team blog: &lt;a href="http://blogs.technet.com/sus/"&gt;http://blogs.technet.com/sus/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Forefront Server Protection blog: &lt;a href="http://blogs.technet.com/b/fss/"&gt;http://blogs.technet.com/b/fss/&lt;/a&gt;     &lt;br /&gt;The Forefront Endpoint Security blog : &lt;a href="http://blogs.technet.com/b/clientsecurity/"&gt;http://blogs.technet.com/b/clientsecurity/&lt;/a&gt;     &lt;br /&gt;The Forefront Identity Manager blog : &lt;a href="http://blogs.msdn.com/b/ms-identity-support/"&gt;http://blogs.msdn.com/b/ms-identity-support/&lt;/a&gt;     &lt;br /&gt;The Forefront TMG blog: &lt;a href="http://blogs.technet.com/b/isablog/"&gt;http://blogs.technet.com/b/isablog/&lt;/a&gt;     &lt;br /&gt;The Forefront UAG blog: &lt;a href="http://blogs.technet.com/b/edgeaccessblog/"&gt;http://blogs.technet.com/b/edgeaccessblog/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3498139" width="1" height="1"&gt;</description></item><item><title>Behavior of the “Logoff URL” option</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/05/11/behavior-of-the-logoff-url-option.aspx</link><pubDate>Fri, 11 May 2012 16:01:02 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3497498</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3497498</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/05/11/behavior-of-the-logoff-url-option.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Symptoms:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You’ve published an internal Web resource. Your users can successfully authenticate and access the site. However, they may discover that selecting any link from a particular page in the site inadvertently sends them back to the initial UAG login form. If they provide their credentials again, the select page loads correctly. If they navigate back to the page in question and again select any link on the page, they are again sent back to the UAG login form.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Potential Cause:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;UAG has detected a request that contains your custom “Logoff URL” and has terminated the session and is now un-authenticated. Any continued access to the site will need to be authenticated again.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;More information:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In the Trunk configuration properties page, under the Authentication tab, you’ll find the “Logoff URL” setting. The default Logoff URL is “/InternalSite/LogoffMsg.asp”. If UAG detects a client request that contains this URL, UAG will terminate the clients’ session.&lt;/p&gt;  &lt;p&gt;This setting is configurable and you can specify a custom value to be used as the logoff mechanism. For instance, if your published web application has its own logoff option, you can specify your applications’ logoff URL to terminate the session. For example, your applications’ logoff may be something like “logoff.jsp”. So you might enter “logoff.jsp” as the “Logoff URL” option.&amp;#160; With this value in place, the expectation is that the session will not be terminated until the client makes a request for “logoff.jsp” (or the session times out&amp;quot;).&lt;/p&gt;  &lt;p&gt;This still doesn’t explain why your users are inexplicably required to re-authenticate when selecting various links in the page. After all, they’re not selecting the applications’ logoff option.&amp;#160; In fact, you may have trouble-shot the issue using a web capture tool such as HTTPWatch or Fiddler…and you have verified that the client does not send a request for “logoff.jsp”, yet you can see that the session has ended and user is required to re-authenticate.&lt;/p&gt;  &lt;p&gt;The root of the problem lies in the fact that UAG treats the “Logoff URL” value as a string. Therefore, any client request that contains this “string” will terminate the session. Even if the value you specify for “Logoff URL” is a substring contained in a client request, the session will be terminated.&lt;/p&gt;  &lt;p&gt;For example:&lt;/p&gt;  &lt;p&gt;The “Logoff URL” value entered is “logoff.jsp”. Logoff.jsp resides in the following location on the server:&lt;/p&gt;  &lt;p&gt;/folderA/logoff.jsp&lt;/p&gt;  &lt;p&gt;The client sends a request for the following:&lt;/p&gt;  &lt;p&gt;/folderB/ignorelogoff.jsp&lt;/p&gt;  &lt;p&gt;UAG detects the string “logoff.jsp” in the request for “/folder/ignorelogoff.jsp” and terminates the session.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Make sure your custom “Logoff URL” value is not a sub-string of any other client request. For example, using the above scenario, you could specify “/logoff.jsp” (i.e. add a forward slash) as your “Logoff URL”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Author&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Richard Barker - Sr Security Support Escalation Engineer, Microsoft CSS Forefront Security Edge Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3497498" width="1" height="1"&gt;</description></item><item><title>UAG Web Monitor shows “There are no events to display”</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/05/08/uag-web-monitor-shows-there-are-no-events-to-display.aspx</link><pubDate>Tue, 08 May 2012 15:06:58 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3496710</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3496710</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/05/08/uag-web-monitor-shows-there-are-no-events-to-display.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Symtoms:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When starting Web Monitor and selecting any option under the Event Viewer category, the Web Monitor displays the following message:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&amp;quot;There are no events to display&amp;quot;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Additionally, if you have a UAG Array and you select &amp;quot;Current Status&amp;quot; under the Array Monitor category, you may see that the UAG nodes show a Synchronization Status of &amp;quot;error&amp;quot;.&lt;/p&gt;  &lt;p&gt;While troubleshooting the issue, the UAG tracing output may show an entry similar to the following:&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;[0]21FC.2F28::&amp;lt;Date/Time&amp;gt; [MonitorHelper]The dummy request failed: System.Net.WebException: Unable to connect to the remote server ---&amp;gt; System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it &amp;lt;UAG server internal IP address&amp;gt;:50002&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Note: For more information on UAG tracing, please see my teammate Ben Ari’s blog on UAG Tracing:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/ben/archive/2010/09/03/uag-tracing-made-simple.aspx"&gt;http://blogs.technet.com/b/ben/archive/2010/09/03/uag-tracing-made-simple.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;More information:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;By default, UAG servers are configured to log UAG related events to the following location:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&amp;lt;UAG install folder&amp;gt;\logs\Events&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;You can then use Web Monitor to view and filter those logged events. See the following TechNet article for more information related to UAG logging:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee428828.aspx"&gt;http://technet.microsoft.com/en-us/library/ee428828.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By default, both the LOGS folder and EVENTS folder have the following Security Permissions:&lt;/p&gt;  &lt;p&gt;SYSTEM - Full Control&lt;/p&gt;  &lt;p&gt;NETWORK SERVICE - Full Control&lt;/p&gt;  &lt;p&gt;Administrators (&amp;lt;localserver&amp;gt;\Administrators) - Full Control&lt;/p&gt;  &lt;p&gt;Users (&amp;lt;localserver&amp;gt;\Users) - Read &amp;amp; execute, List folder contents and Read&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Cause:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You may see the above Web Monitor errors if the NETWORK SERVICE does not have the proper permissions for the Logs and/or Events folders.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Make sure that the NETWORK SERVICE has Full Control permissions for the Logs and/or Events folders (including subfolders and files).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Author&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Richard Barker - Sr Security Support Escalation Engineer, Microsoft CSS Forefront Security Edge Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3496710" width="1" height="1"&gt;</description></item><item><title>SSO (Single Sign On) not working for a published Web Application with UAG</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/04/24/sso-single-sign-on-not-working-for-a-published-web-application-with-uag.aspx</link><pubDate>Tue, 24 Apr 2012 16:55:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3494104</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3494104</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/04/24/sso-single-sign-on-not-working-for-a-published-web-application-with-uag.aspx#comments</comments><description>  &lt;p&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://blogs.technet.com/b/edgeaccessblog/archive/2012/04/19/ms12-026-description-of-the-security-update-for-microsoft-forefront-unified-access-gateway-2010-service-pack-1-april-10-2012.aspx"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Toolbox3" border="0" alt="Toolbox3" align="left" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/6825.Toolbox3_5F00_6B54A1D6.jpg" width="90" height="87" /&gt;&lt;/a&gt;Introduction&lt;/span&gt;:&lt;/p&gt;  &lt;p&gt;We had an application published on Microsoft Forefront Unified Access Gateway 2010 (UAG). Single Sign On (SSO) for that particular application on UAG was not working. We were using 401 to delegate credentials on the Applications Publishing Rule on UAG.&lt;/p&gt;  &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Scenario:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;The issue was specific to one particular application published through UAG. SSO for the other published applications was working fine, so there was definitely something different on that particular server.&lt;/p&gt;  &lt;p&gt;The users were getting the following error when trying to access the application externally:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;You do not have permissions to view this folder or page&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="text-decoration: underline"&gt;Troubleshooting:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;We gathered a UAG trace and its analysis showed the following errors:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="638"&gt;         &lt;p&gt;&lt;span style="font-size: xx-small" size="1"&gt;[0]5a0.1bfc 02/02/2012-22:07:34.406 [whlfilter HTTPAuthentication::CSSPINegStep::ProcessNegStep HTTP401Authentication.cpp@1340] ERROR:HTTPAuth::CSSPINegStep::ProcessNegStep - &lt;b&gt;ERROR: InitializeSecurityContext failed with error code 0x80090302 (PFC=000000000D61D718) (ExtPFC=00000000034F08C0) (ExtECB=0000000005239F10)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p&gt;&lt;span style="font-size: xx-small" size="1"&gt;[0]5a0.1bfc 02/02/2012-22:07:34.406 [whlfilter HTTPAuthentication::CNTLMHandler::Negotiate HTTP401Authentication.cpp@1515] ERROR:HTTPAuth::CNTLMHandler::Negotiate - conversation failed, resetting state (PFC=000000000D61D718) (ExtPFC=00000000034F08C0) (ExtECB=0000000005239F10&lt;/span&gt;&lt;/p&gt;          &lt;p&gt;&lt;span style="font-size: xx-small" size="1"&gt;Error Code 0x80090302 resolves to &lt;b&gt;SEC_E_UNSUPPORTED_FUNCTION&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Researching the message led us to an &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa375512(v=vs.85).aspx"&gt;article&lt;/a&gt; on TechNet that stated:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;span style="font-size: x-small" size="2"&gt;According to InitializeSecurityContext (NTLM) documentation, a call to this method will return a SEC_E_UNSUPPORTED_FUNCTION when : A context attribute flag that is not valid (ISC_REQ_DELEGATE or ISC_REQ_PROMPT_FOR_CREDS) was specified in the fContextReq parameter.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Network traces confirmed that it was exactly the behavior mentioned above, as the backend web server was not setting the &amp;quot;&lt;em&gt;128-Bit Encryption&lt;/em&gt;&amp;quot; flag on its reply in the NTLM negotiate header. In a Network Monitor capture, this is what that looks like:&lt;/p&gt;  &lt;p&gt;Request sent from UAG to the web server:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2630.clip_5F00_image002_5F00_44825FA4.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5775.clip_5F00_image002_5F00_thumb_5F00_323998E2.jpg" width="695" height="617" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Response from the web server:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2146.clip_5F00_image004_5F00_72037F67.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/1663.clip_5F00_image004_5F00_thumb_5F00_03E01335.jpg" width="693" height="483" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As it turns out, the backend server does not support 128-bit NTLM encryption, but UAG was set to require it.&lt;/p&gt;  &lt;p&gt;The ideal way to solve this is by configuring the backend server. If, however, the backend server cannot support 128-bit, we can work around this by disabling 128-bit in UAG. Disabling 128-bit on the UAG server should only be done as a last resort. This is the procedure:&lt;/p&gt;  &lt;p&gt;1. Open the local group policy editor on the UAG server&lt;/p&gt;  &lt;p&gt;2. Navigate to &lt;b&gt;Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;3. Double-click the option “&lt;b&gt;Network security: Minimum session security for NTLM SSP based (including secure RPC) servers&lt;/b&gt;&amp;quot;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7024.clip_5F00_image006_5F00_71974C72.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2727.clip_5F00_image006_5F00_thumb_5F00_186562B3.jpg" width="743" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Uncheck both options and click OK. The setting will change to read “no minimum”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7345.clip_5F00_image008_5F00_582F4938.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2630.clip_5F00_image008_5F00_thumb_5F00_51100CC0.jpg" width="734" height="53" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. Exit the group policy editor.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline"&gt;Author&lt;/span&gt;&lt;/b&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nitin Singh    &lt;br /&gt;Security Support Escalation Engineer     &lt;br /&gt;Microsoft CSS Forefront Security Edge Team&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline"&gt;Technical Reviewers:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Ophir Polotsky     &lt;br /&gt;Security Sr. Support Escalation Engineer     &lt;br /&gt;Microsoft CSS Forefront Security Edge Team&lt;/p&gt;  &lt;p&gt;Ben Ari    &lt;br /&gt;Security Sr. Support Escalation Engineer     &lt;br /&gt;Microsoft CSS Forefront Security Edge Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3494104" width="1" height="1"&gt;</description></item><item><title>MS12-026: Description of the security update for Microsoft Forefront Unified Access Gateway 2010 Service Pack 1: April 10, 2012</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/04/19/ms12-026-description-of-the-security-update-for-microsoft-forefront-unified-access-gateway-2010-service-pack-1-april-10-2012.aspx</link><pubDate>Wed, 18 Apr 2012 22:21:55 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3493049</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3493049</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/04/19/ms12-026-description-of-the-security-update-for-microsoft-forefront-unified-access-gateway-2010-service-pack-1-april-10-2012.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2649261"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7416.image_5F00_721F7BAA.png" width="90" height="84" /&gt;&lt;/a&gt;In case you happened to have missed the announcement last week, Microsoft has released security bulletin MS12-026 - &lt;em&gt;Vulnerabilities in Forefront Unified Access Gateway (UAG) Could Allow Information Disclosure (2663860).&lt;/em&gt; To view the complete security bulletin, visit the following Microsoft website: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/security/bulletin/MS12-026"&gt;http://technet.microsoft.com/security/bulletin/MS12-026&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;J.C. Hornbeck&lt;/b&gt; &lt;strong&gt;| System Center &amp;amp; Security Knowledge Engineer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#c0504d"&gt;Get the latest System Center news on&lt;/font&gt; &lt;/b&gt;&lt;a href="https://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;b&gt;Facebook&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;font color="#c0504d"&gt;and&lt;/font&gt; &lt;/b&gt;&lt;a href="https://twitter.com/#!/MS_SystemCenter"&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;img title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image001_64a4101d-1898-43ad-8493-b15123a8f037.gif" width="89" height="21" /&gt;&lt;/a&gt; &lt;a href="http://www.twitter.com/MS_SystemCenter"&gt;&lt;img title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image002_e463ef66-6372-4614-ad1b-a2e20e16de5f.gif" width="89" height="21" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;App-V Team blog: &lt;a href="http://blogs.technet.com/appv/"&gt;http://blogs.technet.com/appv/&lt;/a&gt;     &lt;br /&gt;ConfigMgr Support Team blog: &lt;a href="http://blogs.technet.com/configurationmgr/"&gt;http://blogs.technet.com/configurationmgr/&lt;/a&gt;     &lt;br /&gt;DPM Team blog: &lt;a href="http://blogs.technet.com/dpm/"&gt;http://blogs.technet.com/dpm/&lt;/a&gt;     &lt;br /&gt;MED-V Team blog: &lt;a href="http://blogs.technet.com/medv/"&gt;http://blogs.technet.com/medv/&lt;/a&gt;     &lt;br /&gt;Orchestrator Support Team blog: &lt;a href="http://blogs.technet.com/b/orchestrator/"&gt;http://blogs.technet.com/b/orchestrator/&lt;/a&gt;     &lt;br /&gt;Operations Manager Team blog: &lt;a href="http://blogs.technet.com/momteam/"&gt;http://blogs.technet.com/momteam/&lt;/a&gt;     &lt;br /&gt;SCVMM Team blog: &lt;a href="http://blogs.technet.com/scvmm"&gt;http://blogs.technet.com/scvmm&lt;/a&gt;     &lt;br /&gt;Server App-V Team blog: &lt;a href="http://blogs.technet.com/b/serverappv"&gt;http://blogs.technet.com/b/serverappv&lt;/a&gt;     &lt;br /&gt;Service Manager Team blog: &lt;a href="http://blogs.technet.com/b/servicemanager"&gt;http://blogs.technet.com/b/servicemanager&lt;/a&gt;     &lt;br /&gt;System Center Essentials Team blog: &lt;a href="http://blogs.technet.com/b/systemcenteressentials"&gt;http://blogs.technet.com/b/systemcenteressentials&lt;/a&gt;     &lt;br /&gt;WSUS Support Team blog: &lt;a href="http://blogs.technet.com/sus/"&gt;http://blogs.technet.com/sus/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Forefront Server Protection blog: &lt;a href="http://blogs.technet.com/b/fss/"&gt;http://blogs.technet.com/b/fss/&lt;/a&gt;     &lt;br /&gt;The Forefront Endpoint Security blog : &lt;a href="http://blogs.technet.com/b/clientsecurity/"&gt;http://blogs.technet.com/b/clientsecurity/&lt;/a&gt;     &lt;br /&gt;The Forefront Identity Manager blog : &lt;a href="http://blogs.msdn.com/b/ms-identity-support/"&gt;http://blogs.msdn.com/b/ms-identity-support/&lt;/a&gt;     &lt;br /&gt;The Forefront TMG blog: &lt;a href="http://blogs.technet.com/b/isablog/"&gt;http://blogs.technet.com/b/isablog/&lt;/a&gt;     &lt;br /&gt;The Forefront UAG blog: &lt;a href="http://blogs.technet.com/b/edgeaccessblog/"&gt;http://blogs.technet.com/b/edgeaccessblog/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3493049" width="1" height="1"&gt;</description></item><item><title>KB: Upgrading to Microsoft Forefront Unified Access Gateway 2010 Service Pack 1 fails with error 1603</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/03/20/kb-upgrading-to-microsoft-forefront-unified-access-gateway-2010-service-pack-1-fails-with-error-1603.aspx</link><pubDate>Tue, 20 Mar 2012 15:23:38 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3487691</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3487691</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/03/20/kb-upgrading-to-microsoft-forefront-unified-access-gateway-2010-service-pack-1-fails-with-error-1603.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2685784"&gt;&lt;img title="hotfix" border="0" alt="hotfix" align="left" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-81-metablogapi/5224.hotfix_5F00_37B90D94.jpg" width="85" height="95" /&gt;&lt;/a&gt;Here’s a new Knowledge Base article we published today. This one talks about an issue where upgrading to Microsoft Forefront Unified Access Gateway 2010 SP1 fails with error 1603 and rolls back:&lt;/p&gt;  &lt;p&gt;=====&lt;/p&gt;  &lt;h5&gt;Symptoms&lt;/h5&gt;  &lt;p&gt;When upgrading to Microsoft Forefront Unified Access Gateway 2010 (UAG) Service Pack 1 (SP1), the upgrade fails with error 1603 and rolls back. You may also see the following in the UAG SP1 Setup log files for UAG which are located at %ProgramData%\Microsoft\UAG\Logs:&lt;/p&gt; &lt;dl&gt;&lt;dt&gt;&lt;i&gt;Hybrid_Default_Web_App_Access.&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;MSI (s) (48!98) [08:51:45:640]: Closing MSIHANDLE (577708) of type 790531 for thread 5016&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;MSI (s) (48!98) [08:51:45:662]: Creating MSIHANDLE (577709) of type 790531 for thread 5016&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;UAG CA (Info): Error: Caught error (will rethrow after rollback): System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;at System.ThrowHelper.ThrowKeyNotFoundException()&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;at System.Collections.Generic.Dictionary`2.get_Item(TKey key)&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;at Microsoft.UAG.Transformer.Core.PolicyConverter.ProcessTrunk(String trunkName, XmlNode trunkNode, String policySettingsNodeXPath)&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;at Microsoft.UAG.Transformer.Core.PolicyConverter.ConvertData()&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;at Microsoft.UAG.Transformer.Core.SchemaConversionRuntime.Run()&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;MSI (s) (48!98) [08:51:45:662]: Closing MSIHANDLE (577709) of type 790531 for thread 5016&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;MSI (s) (48!98) [08:51:45:663]: Creating MSIHANDLE (577710) of type 790531 for thread 5016&lt;/i&gt; &lt;/dt&gt;&lt;dt&gt;&lt;i&gt;UAG CA (Info): Info: Firing ProgressChanged event: Step: 0%, Description: 'Conversion aborted due to error, Rolling back.'.&lt;/i&gt;&lt;/dt&gt;&lt;/dl&gt;  &lt;h5&gt;Cause&lt;/h5&gt;  &lt;p&gt;This can occur if UAG is configured with the Sharepoint-specific download and upload endpoint policies prior to running the SP1 upgrade. The installation process raises an exception and rolls back when the name of one (or more) of the existing standard policies is in use by an application.&lt;/p&gt;  &lt;h5&gt;Resolution&lt;/h5&gt;  &lt;p&gt;To resolve this issue, create new custom policies with the same data and use those instead of the Sharepoint-specific download and upload endpoint policies.&lt;/p&gt;  &lt;h5&gt;More Information&lt;/h5&gt;  &lt;p&gt;For more information see the following:&lt;/p&gt;  &lt;p&gt;Configuring Forefront UAG access policies : &lt;a href="http://technet.microsoft.com/en-us/library/dd857309.aspx"&gt;http://technet.microsoft.com/en-us/library/dd857309.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=====&lt;/p&gt;  &lt;p&gt;For the most current version of this article please see the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2685784"&gt;2685784 : Upgrading to Microsoft Forefront Unified Access Gateway 2010 Service Pack 1 fails with error 1603&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;J.C. Hornbeck&lt;/b&gt; &lt;strong&gt;| System Center &amp;amp; Security Knowledge Engineer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#c0504d"&gt;Get the latest System Center news on&lt;/font&gt; &lt;/b&gt;&lt;a href="https://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;b&gt;Facebook&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;font color="#c0504d"&gt;and&lt;/font&gt; &lt;/b&gt;&lt;a href="https://twitter.com/#!/MS_SystemCenter"&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;img title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image001_64a4101d-1898-43ad-8493-b15123a8f037.gif" width="89" height="21" /&gt;&lt;/a&gt; &lt;a href="http://www.twitter.com/MS_SystemCenter"&gt;&lt;img title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image002_e463ef66-6372-4614-ad1b-a2e20e16de5f.gif" width="89" height="21" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;App-V Team blog: &lt;a href="http://blogs.technet.com/appv/"&gt;http://blogs.technet.com/appv/&lt;/a&gt;     &lt;br /&gt;ConfigMgr Support Team blog: &lt;a href="http://blogs.technet.com/configurationmgr/"&gt;http://blogs.technet.com/configurationmgr/&lt;/a&gt;     &lt;br /&gt;DPM Team blog: &lt;a href="http://blogs.technet.com/dpm/"&gt;http://blogs.technet.com/dpm/&lt;/a&gt;     &lt;br /&gt;MED-V Team blog: &lt;a href="http://blogs.technet.com/medv/"&gt;http://blogs.technet.com/medv/&lt;/a&gt;     &lt;br /&gt;Orchestrator Support Team blog: &lt;a href="http://blogs.technet.com/b/orchestrator/"&gt;http://blogs.technet.com/b/orchestrator/&lt;/a&gt;     &lt;br /&gt;Operations Manager Team blog: &lt;a href="http://blogs.technet.com/momteam/"&gt;http://blogs.technet.com/momteam/&lt;/a&gt;     &lt;br /&gt;SCVMM Team blog: &lt;a href="http://blogs.technet.com/scvmm"&gt;http://blogs.technet.com/scvmm&lt;/a&gt;     &lt;br /&gt;Server App-V Team blog: &lt;a href="http://blogs.technet.com/b/serverappv"&gt;http://blogs.technet.com/b/serverappv&lt;/a&gt;     &lt;br /&gt;Service Manager Team blog: &lt;a href="http://blogs.technet.com/b/servicemanager"&gt;http://blogs.technet.com/b/servicemanager&lt;/a&gt;     &lt;br /&gt;System Center Essentials Team blog: &lt;a href="http://blogs.technet.com/b/systemcenteressentials"&gt;http://blogs.technet.com/b/systemcenteressentials&lt;/a&gt;     &lt;br /&gt;WSUS Support Team blog: &lt;a href="http://blogs.technet.com/sus/"&gt;http://blogs.technet.com/sus/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Forefront Server Protection blog: &lt;a href="http://blogs.technet.com/b/fss/"&gt;http://blogs.technet.com/b/fss/&lt;/a&gt;     &lt;br /&gt;The Forefront Endpoint Security blog : &lt;a href="http://blogs.technet.com/b/clientsecurity/"&gt;http://blogs.technet.com/b/clientsecurity/&lt;/a&gt;     &lt;br /&gt;The Forefront Identity Manager blog : &lt;a href="http://blogs.msdn.com/b/ms-identity-support/"&gt;http://blogs.msdn.com/b/ms-identity-support/&lt;/a&gt;     &lt;br /&gt;The Forefront TMG blog: &lt;a href="http://blogs.technet.com/b/isablog/"&gt;http://blogs.technet.com/b/isablog/&lt;/a&gt;     &lt;br /&gt;The Forefront UAG blog: &lt;a href="http://blogs.technet.com/b/edgeaccessblog/"&gt;http://blogs.technet.com/b/edgeaccessblog/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3487691" width="1" height="1"&gt;</description></item><item><title>KB: Session timeout does not work as expected when publishing Exchange Outlook Web Access with UAG 2010</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2012/03/07/kb-session-timeout-does-not-work-as-expected-when-publishing-exchange-outlook-web-access-with-uag-2010.aspx</link><pubDate>Wed, 07 Mar 2012 19:41:50 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3485301</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3485301</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2012/03/07/kb-session-timeout-does-not-work-as-expected-when-publishing-exchange-outlook-web-access-with-uag-2010.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2621269"&gt;&lt;img title="hotfix" border="0" alt="hotfix" align="left" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-81-metablogapi/5224.hotfix_5F00_37B90D94.jpg" width="80" height="89" /&gt;&lt;/a&gt;Here’s a new Knowledge Base article we published today. This one talks about an issue where the session timeout doesn’t work as expected when publishing OWA with UAG 2010:&lt;/p&gt;  &lt;p&gt;=====&lt;/p&gt;  &lt;h5&gt;Symptoms&lt;/h5&gt;  &lt;p&gt;Microsoft Forefront Unified Access Gateway 2010 (UAG 2010) allows a user to define &lt;b&gt;Inactive session timeout&lt;/b&gt;. The Inactive session timeout defines the maximum time a session can be inactive before it times out (see &lt;a href="http://technet.microsoft.com/en-us/library/ee406216.aspx"&gt;http://technet.microsoft.com/en-us/library/ee406216.aspx&lt;/a&gt;). When publishing Microsoft Exchange Outlook Web Access 2010 (OWA 2010) using UAG 2010, the session may stay active even if there is no activity for longer than the value defined in the &amp;quot;Inactive session timeout&amp;quot; field.&lt;/p&gt;  &lt;h5&gt;Cause&lt;/h5&gt;  &lt;p&gt;The UAG 2010 configuration has a setting for &lt;b&gt;Ignore requests in timeout calculations &lt;/b&gt;that contains a list of URLs that are ignored in the calculation of the Inactive Session Timeout settings (see &lt;a href="http://technet.microsoft.com/en-us/library/ee406216.aspx#BKMK_Global"&gt;http://technet.microsoft.com/en-us/library/ee406216.aspx#BKMK_Global&lt;/a&gt;).     &lt;br /&gt;When a client issues a request to one of the URLs and methods define in this list that contain a body (like in a POST method), the request will still be counted as active even if it matches the settings in this list. In addition, some URLs are missing from the default list for OWA 2010.&lt;/p&gt;  &lt;h5&gt;Resolution&lt;/h5&gt;  &lt;p&gt;To resolve this issue complete the following:    &lt;br /&gt;1. Install Service Pack 1 Update 1 for Forefront Unified Access Gateway (&lt;a href="http://support.microsoft.com/kb/2585140"&gt;http://support.microsoft.com/kb/2585140)&lt;/a&gt;     &lt;br /&gt;2. After installing SP1, add the following URLs and methods to the &lt;b&gt;Ignore requests in timeout calculations &lt;/b&gt;settings for the &amp;quot;Microsoft Exchange Server 2010&amp;quot; application:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;b&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/6320.image_5F00_1646AD7D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0647.image_5F00_thumb_5F00_23ACC083.png" width="500" height="88" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;=====&lt;/p&gt;  &lt;p&gt;For the most current version of this article please see the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2621269"&gt;2621269 : Session timeout does not work as expected when publishing Exchange Outlook Web Access with UAG 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;J.C. Hornbeck&lt;/b&gt; &lt;strong&gt;| System Center &amp;amp; Security Knowledge Engineer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#c0504d"&gt;Get the latest System Center news on&lt;/font&gt; &lt;/b&gt;&lt;a href="https://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;b&gt;Facebook&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;font color="#c0504d"&gt;and&lt;/font&gt; &lt;/b&gt;&lt;a href="https://twitter.com/#!/MS_SystemCenter"&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.facebook.com/pages/Microsoft-System-Center-Support/111513322193410"&gt;&lt;img title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image001_64a4101d-1898-43ad-8493-b15123a8f037.gif" width="89" height="21" /&gt;&lt;/a&gt; &lt;a href="http://www.twitter.com/MS_SystemCenter"&gt;&lt;img title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/blogfiles/medv/WindowsLiveWriter/MEDVPrintingOptionsandIssuesyoumayencoun_8540/clip_image002_e463ef66-6372-4614-ad1b-a2e20e16de5f.gif" width="89" height="21" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;App-V Team blog: &lt;a href="http://blogs.technet.com/appv/"&gt;http://blogs.technet.com/appv/&lt;/a&gt;     &lt;br /&gt;ConfigMgr Support Team blog: &lt;a href="http://blogs.technet.com/configurationmgr/"&gt;http://blogs.technet.com/configurationmgr/&lt;/a&gt;     &lt;br /&gt;DPM Team blog: &lt;a href="http://blogs.technet.com/dpm/"&gt;http://blogs.technet.com/dpm/&lt;/a&gt;     &lt;br /&gt;MED-V Team blog: &lt;a href="http://blogs.technet.com/medv/"&gt;http://blogs.technet.com/medv/&lt;/a&gt;     &lt;br /&gt;Orchestrator Support Team blog: &lt;a href="http://blogs.technet.com/b/orchestrator/"&gt;http://blogs.technet.com/b/orchestrator/&lt;/a&gt;     &lt;br /&gt;Operations Manager Team blog: &lt;a href="http://blogs.technet.com/momteam/"&gt;http://blogs.technet.com/momteam/&lt;/a&gt;     &lt;br /&gt;SCVMM Team blog: &lt;a href="http://blogs.technet.com/scvmm"&gt;http://blogs.technet.com/scvmm&lt;/a&gt;     &lt;br /&gt;Server App-V Team blog: &lt;a href="http://blogs.technet.com/b/serverappv"&gt;http://blogs.technet.com/b/serverappv&lt;/a&gt;     &lt;br /&gt;Service Manager Team blog: &lt;a href="http://blogs.technet.com/b/servicemanager"&gt;http://blogs.technet.com/b/servicemanager&lt;/a&gt;     &lt;br /&gt;System Center Essentials Team blog: &lt;a href="http://blogs.technet.com/b/systemcenteressentials"&gt;http://blogs.technet.com/b/systemcenteressentials&lt;/a&gt;     &lt;br /&gt;WSUS Support Team blog: &lt;a href="http://blogs.technet.com/sus/"&gt;http://blogs.technet.com/sus/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Forefront Server Protection blog: &lt;a href="http://blogs.technet.com/b/fss/"&gt;http://blogs.technet.com/b/fss/&lt;/a&gt;     &lt;br /&gt;The Forefront Endpoint Security blog : &lt;a href="http://blogs.technet.com/b/clientsecurity/"&gt;http://blogs.technet.com/b/clientsecurity/&lt;/a&gt;     &lt;br /&gt;The Forefront Identity Manager blog : &lt;a href="http://blogs.msdn.com/b/ms-identity-support/"&gt;http://blogs.msdn.com/b/ms-identity-support/&lt;/a&gt;     &lt;br /&gt;The Forefront TMG blog: &lt;a href="http://blogs.technet.com/b/isablog/"&gt;http://blogs.technet.com/b/isablog/&lt;/a&gt;     &lt;br /&gt;The Forefront UAG blog: &lt;a href="http://blogs.technet.com/b/edgeaccessblog/"&gt;http://blogs.technet.com/b/edgeaccessblog/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3485301" width="1" height="1"&gt;</description></item><item><title>DirectAccess Connectivity Assistant polling interval</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/12/20/directaccess-connectivity-assistant-polling-interval.aspx</link><pubDate>Tue, 20 Dec 2011 13:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3472188</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3472188</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/12/20/directaccess-connectivity-assistant-polling-interval.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We have recently had a number of customers inquire about the default polling interval for the DCA client. The polling interval of the DCA client is 30 seconds.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline"&gt;More Info&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;One of the primary functions of the DirectAccess Connectivity Assistant is to indicate the operational status of DirectAccess by using an icon in the notification area. The DCA client is deployed with connectivity verifiers that are configured to poll specified internal resources. These resources can consist of a combination of HTTP/HTTPS and File/SMB resources.&lt;/p&gt;  &lt;p&gt;The DCA client polls these resources once every 30 seconds to verify connectivity. The polling interval is not configurable and is not “auto-adjusted” by the DCA client. For more information on the DirectAccess Connectivity Assistant, please see the following article:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/gg502552.aspx" target="_blank"&gt;DirectAccess Connectivity Assistant 1.5 Deployment Guide&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline"&gt;Author&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Richard Barker - Sr Security Support Escalation Engineer, Microsoft CSS Forefront Security Edge Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3472188" width="1" height="1"&gt;</description></item><item><title>The UAG DirectAccess Web Monitor shows “Network Security” as Not Healthy</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/12/15/the-uag-directaccess-web-monitor-shows-network-security-as-not-healthy.aspx</link><pubDate>Thu, 15 Dec 2011 16:50:01 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3471089</guid><dc:creator>Forefront UAG Team</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3471089</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/12/15/the-uag-directaccess-web-monitor-shows-network-security-as-not-healthy.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Symptom:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When checking the Current Status of DirectAccess using the Web Monitor, you may find that the report shows “Network Security” as Not Healthy.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/1663.image_5F00_37A2B8AF.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3113.image_5F00_thumb_5F00_2ED2B063.png" width="697" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;More Information:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When activating the UAG DirectAccess configuration, the internal interface selected in the UAG DirectAccess wizard is configured with IPsec Denial of Service Protection (DoSP or ipsecdos). DoSP helps to prevent internal computers from being affected by denial of service attack against IPv6-based IPsec computers on your network (i.e. DA clients)&lt;/p&gt;  &lt;p&gt;DoSP typically runs on a computer that connects to two or more network, where the networks are Public or Private. If IPSec Denial of Server Protection is not enabled on the interface, the DirectAccess Web Monitor status may show “Network Security” as Not Healthy.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Possible causes:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1. IPSecdos may not be enabled on the Internal ISATAP interface&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Running ‘netsh ipsecdos show interface’ will the display the list of interfaces with IPSecdos enabled.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5857.image_5F00_2602A817.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5850.image_5F00_thumb_5F00_64F428B2.png" width="536" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;However, you may find that no “Internal interfaces” are listed in the output. If there is no internal ISATAP interface listed, this may be the cause of the problem. To alleviate this problem, you first need to determine the servers’ internal ISATAP interface. Running ‘ipconfig/all’ will display all of the active/usable interfaces on the machine. The internal ISATAP interface will typical have an IPv4 DNS server configured. Once you’ve determined the internal ISATAP interface, run the following command:&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Netsh ipsecdos add interface name=”&amp;lt;Friendly name of the interface&amp;gt;” type=internal&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2"&gt;Note: Following my example above, the friendly name would equal “isatap.&amp;lt;2DED6CDA-E410-46BE-B358-36B488D4797C&amp;gt;”&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2. The UAG servers 6to4 and/or ISATAP interfaces are missing/unusable.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;An issue existed in Windows 2008 R2 RTM where, under certain reboot scenarios, a new 6to4 and/or ISATAP adapter may be created. Essentially, when the computer restarts, the Plug and Play service shuts down before the process to enable the “reuse” of the 6to4/ISATAP adapter occurs. Therefore, the 6to4/ISATAP adapter cannot be reused after startup so a new, additional 6to4/ISATAP adapter is created.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Normally, the UAG server should have one virtual 6to4 adapter and three ISATAP adapters (one for each of the two physical NICs and one for the SSL tunnel adapter).&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;If your computer has experienced this issue, you may notice multiple 6to4 and/or ISATAP virtual adapters listed when running ‘ipconfig /all’. If you notice multiple 6to4 adapters listed, you may find that one or more of them may have a Media State of “Media Disconnected”. Additionally, you may notice multiple ISATAP adapters (i.e. 4 or more).&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;So why does this cause so much grief for UAG DirectAccess? When UAG DirectAccess is configured, Enabled and Activated, it queries the available adapters and creates the DA policy and forwarding statements based on these interfaces. This includes the ‘useable’ 6to4 and ISATAP interfaces that are available when DirectAccess is Enabled.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;If your server experiences this issue during a reboot, the new ‘reusable’ interfaces that are created do not have ipsecdos enabled by default. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Steps to correct the issue:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Typically, there are two avenues you can take. The first is to ‘clean up’ all the 6to4 and ISATAP interfaces, and allow them to be recreated. The second is to configure DirectAccess to make use of new “useable” interface&amp;lt;s&amp;gt; available; while leaving the original ‘non-reusable” interface intact. Both of these steps will enable ipsecdos on the new ‘reusable’ interface&amp;lt;s&amp;gt;.&lt;/p&gt;  &lt;p&gt;1. Clean up the interfaces&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Open the UAG console, select DirectAccess and click the Disable button. After DirectAccess is disabled, Activate and then close the UAG console.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b. At an Administrative command prompt, run the following command: ‘set devmgr_show_nonpresent_device=1’&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c. Open Device Manager and select View-Show hidden devices. Then expand ‘Network Adapters’ and delete all 6to4 and ISTAP adapters listed.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d. Open the UAG console, select DirectAccess and click the Enable button. After DirectAccess is enabled, Activate the configuration.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;2. Configure UAG to make use of the new (i.e. reusable) interfaces&amp;lt;s&amp;gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Open the UAG console, select DirectAccess and click Disable button. After DirectAccess is disabled, Activate the configuration.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b. In the UAG console, select DirectAccess and client the Enable button. After DirectAccess is enabled, Activate the configuration.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Additional information:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This Windows 2008 R2 RTM issue has been addressed in Windows 2008 R2 Service Pack 1. However, it should be noted that process of installing Service Pack 1 and rebooting may put the server in this state again. If so, follow the steps above again to correct the behavior. The issue should then be alleviated moving forward.&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Author&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Richard Barker - Sr Security Support Escalation Engineer, Microsoft CSS Forefront Security Edge Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3471089" width="1" height="1"&gt;</description></item><item><title>SSO to SharePoint 2010 through UAG when using two authentication schemas</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/11/15/sso-to-sharepoint-2010-through-uag-when-using-two-authentication-schemas.aspx</link><pubDate>Tue, 15 Nov 2011 17:05:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3465309</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3465309</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/11/15/sso-to-sharepoint-2010-through-uag-when-using-two-authentication-schemas.aspx#comments</comments><description>&lt;p&gt;Hi everyone, this is Dror from the Forefront UAG product group.&lt;/p&gt;
&lt;p&gt;One of our customers ran into an issue with their SharePoint deployment and we thought it is worth sharing with you all the ways that UAG can be leveraged.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s assume a topology like this one:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7026.clip_5F00_image0027_5F00_59301AFC.gif"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image002[7]" border="0" alt="clip_image002[7]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/4705.clip_5F00_image0027_5F00_thumb_5F00_1029F936.gif" width="400" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;In this case, two different categories of users gain access to the SharePoint farm via UAG: internal users (while outside of the company network), and partner users. Windows Integrated authentication is used in SharePoint for internal users, while form-based authentication is used for partner users. However, the SharePoint URL is the same for both types of users. As such, we have a case where SharePoint 2010 is configured with two authentication schemes for the same Intranet Zone.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0160.clip_5F00_image0045_5F00_0A6EDF90.jpg"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image004[5]" border="0" alt="clip_image004[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/1172.clip_5F00_image0045_5F00_thumb_5F00_481BC74C.jpg" width="244" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Normally, in SharePoint 2010 in a scenario where you configure more than one authentication per zone, users are presented with a form where they need to choose which authentication method to use:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5488.clip_5F00_image0064_5F00_466AFB78.gif"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image006[4]" border="0" alt="clip_image006[4]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/8424.clip_5F00_image0064_5F00_thumb_5F00_2BBE5F5F.gif" width="240" height="101" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Till now everything is cool&amp;hellip;&lt;/p&gt;
&lt;p align="justify"&gt;Most customers wish to have a single sign-on (SSO) experience for their users. That means that once users are logged in to UAG, they will not be prompted for credentials again. This is the SSO functionality that UAG offers. The question we faced in this specific case was: how can we achieve the same end-user experience of no additional prompts to the end-user, in this case where the &amp;ldquo;&lt;i&gt;Multi-authentication selection&lt;/i&gt;&amp;rdquo; page is required by SharePoint?&lt;/p&gt;
&lt;p&gt;There are 2 ways to handle this &amp;ldquo;&lt;i&gt;Multi-authentication selection&lt;/i&gt;&amp;rdquo; page:&lt;/p&gt;
&lt;p align="justify"&gt;1. Auto-submit the page with a pre-defined selection &amp;ndash; The UAG administrator can decide on the selected option by applying a custom setting. In this case, when the page sent by the SharePoint server is received by UAG, and before UAG sends it on its way to the client browser, UAG injects into the &amp;ldquo;&lt;i&gt;Multi-authentication selection&lt;/i&gt;&amp;rdquo; page some code, in order to cause the page, as soon as it&amp;rsquo;s displayed on the user&amp;rsquo;s browser, to be automatically submitted with a predefined option, either &lt;i&gt;Windows Authentication&lt;/i&gt; or &lt;i&gt;Forms Authentication&lt;/i&gt;, without requiring any end-user interaction.&lt;/p&gt;
&lt;p align="justify"&gt;Here is a sample of this customization, using a custom &lt;i&gt;AppWrap&lt;/i&gt; file, which shows the steps. &lt;b&gt;Note that this example cannot be used &amp;lsquo;as is&amp;rsquo; since all the values in the SEARCH and REPLACE fields need to be BASE64-encoded&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;APP_WRAP ver="3.0" id="RemoteAccess_HTTPS.xml"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;MANIPULATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;MANIPULATION_PER_APPLICATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;APPLICATION_TYPE&amp;gt;SharePoint14AAM&amp;lt;/APPLICATION_TYPE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;URL case_sensitive="false"&amp;gt;.*/_login/default\.aspx.*&amp;lt;/URL&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SEARCH encoding="base64"&amp;gt;&amp;lt;option selected="selected" value="none"&amp;gt;&amp;lt;/option&amp;gt;&amp;lt;/SEARCH&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;REPLACE encoding="base64"&amp;gt;&amp;lt;option selected="selected" value="Forms"&amp;gt;Forms Authentication&amp;lt;/option&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SEARCH encoding="base64"&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/SEARCH&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;REPLACE encoding="base64"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SCRIPT language="JavaScript"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;function FormLoginSubmit()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;var o = document.getElementById('ctl00_PlaceHolderMain_ClaimsLogonSelector');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;var evt = document.createEventObject();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;o.fireEvent('onchange',evt);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;o=null;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SCRIPT language="JavaScript"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;var gSafeOnload = new Array();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;function FormLoginOnload()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;for (var i=0; i &amp;lt; gSafeOnload.length; i++)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;gSafeOnload[i]();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;if (window.onload) {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;gSafeOnload[0] = window.onload;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;gSafeOnload[gSafeOnload.length] = FormLoginSubmit;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;window.onload = FormLoginOnload;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;else&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;window.onload = FormLoginSubmit;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/body&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/MANIPULATION_PER_APPLICATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/MANIPULATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/APP_WRAP&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p align="justify"&gt;2. Auto-submit the page with a selection based on a session (user) parameter &amp;ndash; This is an extension of the first method, as shown above. Using this method, the selection between Windows or Forms authentication is not pre-defined and constant for all UAG sessions, and instead it can be dynamically set for each UAG session. The UAG administrator can set a parameter with one of two values, which UAG will later use to decide which authentication method to choose when submitting the &amp;ldquo;&lt;i&gt;Multi-authentication selection&lt;/i&gt;&amp;rdquo; form. This parameter is stored within the context of the UAG session and it can be set by using the UAG customization mechanism. UAG makes its decision using the &lt;i&gt;conditional AppWrap&lt;/i&gt; mechanism.&lt;/p&gt;
&lt;p align="justify"&gt;In the example below the Contoso administrator uses a custom &lt;b&gt;&lt;i&gt;ValidateSuccess.inc&lt;/i&gt;&lt;/b&gt; file to insert a parameter named &lt;span style="background-color: #ffff00;"&gt;AuthenticationMethodVar&lt;/span&gt; into the UAG session. In this file, VBScript code is used to check if the user&amp;rsquo;s UPN is part of the Contoso domain. If yes, the value of &lt;span style="background-color: #ffff00;"&gt;AuthenticationMethodVar&lt;/span&gt; is set to &lt;i&gt;WINDOWS&lt;/i&gt;, otherwise it is set to &lt;i&gt;FORM&lt;/i&gt;. In the custom &lt;i&gt;AppWrap&lt;/i&gt; file we use this value to decide which of the authentication methods will be selected.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;%&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;'&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;' Add a session variable based on user internal/external&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;'&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;MyUserUDomain = &amp;ldquo;contoso\&amp;rdquo;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;if Left(Session("LeadUser"), Len(MyUserUDomain)) = MyUserUDomain then&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;SetSessionParam g_cookie, &amp;ldquo;&lt;span style="background-color: #ffff00;"&gt;AuthenticationMethodVar&lt;/span&gt;&amp;rdquo;, &amp;ldquo;FORM&amp;rdquo;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;else&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;SetSessionParam g_cookie, &amp;ldquo;&lt;span style="background-color: #ffff00;"&gt;AuthenticationMethodVar&lt;/span&gt;&amp;rdquo;, &amp;ldquo;WINDOWS&amp;rdquo; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;end if&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;end if&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is a sample of this customization, using a custom &lt;i&gt;AppWrap&lt;/i&gt; file, which shows the steps. &lt;b&gt;Note that this example cannot be used &amp;lsquo;as is&amp;rsquo; since all the values in the SEARCH and REPLACE fields need to be BASE64-encoded&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;APP_WRAP ver="3.0" id="RemoteAccess_HTTPS.xml"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;MANIPULATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;MANIPULATION_PER_APPLICATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;APPLICATION_TYPE&amp;gt;SharePoint14AAM&amp;lt;/APPLICATION_TYPE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;URL case_sensitive="false"&amp;gt;.*/_login/default\.aspx.*&amp;lt;/URL&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SAR conditional_variable=" AuthenticationMethodVar " conditional_var_value="WINDOWS"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SEARCH encoding="base64"&amp;gt;&amp;lt;option selected="selected" value="none"&amp;gt;&amp;lt;/option&amp;gt;&amp;lt;/SEARCH&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;REPLACE encoding="base64"&amp;gt;&amp;lt;option selected="selected" value="Windows"&amp;gt;Internal User&amp;lt;/option&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SAR conditional_variable=" AuthenticationMethodVar " conditional_var_value="FORM"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SEARCH encoding="base64"&amp;gt;&amp;lt;option selected="selected" value="none"&amp;gt;&amp;lt;/option&amp;gt;&amp;lt;/SEARCH&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;REPLACE encoding="base64"&amp;gt;&amp;lt;option selected="selected" value="Forms"&amp;gt;Partner User&amp;lt;/option&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SEARCH encoding="base64"&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/SEARCH&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;REPLACE encoding="base64"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SCRIPT language="JavaScript"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;function FormLoginSubmit()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;var o = document.getElementById('ctl00_PlaceHolderMain_ClaimsLogonSelector');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;var evt = document.createEventObject();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;o.fireEvent('onchange',evt);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;o=null;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;SCRIPT language="JavaScript"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;var gSafeOnload = new Array();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;function FormLoginOnload()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;for (var i=0; i &amp;lt; gSafeOnload.length; i++)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;gSafeOnload[i]();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;if (window.onload) {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;gSafeOnload[0] = window.onload;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;gSafeOnload[gSafeOnload.length] = FormLoginSubmit;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;window.onload = FormLoginOnload;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;else&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;window.onload = FormLoginSubmit;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/body&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/SAR&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/MANIPULATION_PER_APPLICATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/MANIPULATION&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;lt;/APP_WRAP&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Once this form is submitted, the flow will continue according to the selection submitted back from the client browser (remember, the end-user has no say and no interaction with the form, as the selection is made on the end-user&amp;rsquo;s behalf by the UAG administrator, by using one of the two methods described above). For Windows Integrated authentication, the SharePoint server returns an HTTP 401 response to which UAG answers on behalf of the user. For FBA, the SharePoint server returns its authentication form, which UAG handles in its normal way of handling SSO to backend web sites that use FBA &amp;ndash; UAG injects some content into that form, before sending it to the browser, then, once the browser receives it from UAG, it renders the page and immediately submits it back, without any user interaction (due to code injected by UAG) and SSO is completed.&lt;/p&gt;
&lt;p align="justify"&gt;Note that in order for both of these options to work, in the UAG Management console the authentication for the SharePoint application should be configured to &lt;b&gt;&lt;i&gt;Use SSO&lt;/i&gt;&lt;/b&gt; for &lt;b&gt;&lt;i&gt;Both&lt;/i&gt;&lt;/b&gt; (which means UAG should be ready to handle HTTP 401 responses, as well as the HTML form of the SharePoint server).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3731.clip_5F00_image0084_5F00_06FD221B.gif"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image008[4]" border="0" alt="clip_image008[4]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3644.clip_5F00_image0084_5F00_thumb_5F00_3DF70054.gif" width="244" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Author:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Dror Melovany, Software Development Engineer, Microsoft Forefront UAG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3465309" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/edgeaccessblog/archive/tags/Sharepoint+Publishing/">Sharepoint Publishing</category></item><item><title>On a DA client, the DCA shows a red X or a yellow exclamation mark even when the connection works fine.</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/11/09/on-a-da-client-the-dca-shows-a-red-x-or-a-yellow-exclamation-mark-even-when-the-connection-works-fine.aspx</link><pubDate>Wed, 09 Nov 2011 18:00:34 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3464234</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3464234</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/11/09/on-a-da-client-the-dca-shows-a-red-x-or-a-yellow-exclamation-mark-even-when-the-connection-works-fine.aspx#comments</comments><description>&lt;p&gt;A common situation with UAG is that when a DA client connects, he sees a red X or a yellow exclamation mark even when the connection is actually working fine.&lt;a name="_GoBack"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This type of thing can happen if you have configured the DA connectivity verifiers to use the URL of the NLS server. The NLS server is normally listed as an exclusion in the NRPT, because we &lt;u&gt;need&lt;/u&gt; it to not be available to DA clients, as its unavailability is what triggers the DA client to initialize the DA connection:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0172.clip_5F00_image002_5F00_6CA94F34.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2251.clip_5F00_image002_5F00_thumb_5F00_4164B82D.jpg" width="466" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This issue sounds like a problem with the connection itself, but we can see it is not because client can clearly connect to other internal resources, and so the DCA error is a false-negative. &lt;/p&gt;  &lt;p&gt;This is rather simple to address. Simply use a different server as a connectivity verification method!&lt;/p&gt;  &lt;p&gt;To do this, follow these steps:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Open the UAG Configuration console&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Go to the &lt;b&gt;Client Connectivity Assistant Configuration&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Go to page 2 of the wizard – “&lt;b&gt;Connection Verification&lt;/b&gt;”&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Remove the NLS URL, and add in a different server that should be available (the organization’s SharePoint server, or some other website, perhaps)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;5. Complete the wizard&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;6. Activate the configuration.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;7. Re-run the Group Policy script on UAG, and deploy the new policy to clients.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here are some additional resources which talk about NLS and NRPT in details:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/gg502552.aspx"&gt;http://technet.microsoft.com/en-us/library/gg502552.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/tomshinder/archive/2010/04/02/directaccess-client-location-awareness-nrpt-name-resolution.aspx"&gt;http://blogs.technet.com/b/tomshinder/archive/2010/04/02/directaccess-client-location-awareness-nrpt-name-resolution.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/tomshinder/archive/2010/04/06/when-good-network-location-servers-go-bad-preparing-against-nls-failure.aspx"&gt;http://blogs.technet.com/b/tomshinder/archive/2010/04/06/when-good-network-location-servers-go-bad-preparing-against-nls-failure.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;b&gt;Nitin Singh&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3464234" width="1" height="1"&gt;</description></item><item><title>Lessons from the Field and Best Practices for Active Directory Authorization on Unified Access Gateway 2010(UAG)</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/10/31/lessons-from-the-field-and-best-practices-for-active-directory-authorization-on-unified-access-gateway-2010-uag.aspx</link><pubDate>Mon, 31 Oct 2011 20:45:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3462490</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3462490</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/10/31/lessons-from-the-field-and-best-practices-for-active-directory-authorization-on-unified-access-gateway-2010-uag.aspx#comments</comments><description>&lt;p&gt;An issue that has been experienced by many UAG customers is a situation where the UAG portal becomes unresponsive while users try to access it externally. This can also manifest itself as a slow login.&lt;/p&gt;  &lt;p&gt;When the user clicks on the ‘Log-on’ button on the Portal Page, to check whether the user is an Authenticated user or not &lt;b&gt;UAG&lt;/b&gt; checks all its ‘Authentication Repository’ settings to get the Domain Controllers information and the other settings associated with them. One of those settings is the &lt;b&gt;‘Level Of Nested Group’&lt;/b&gt;. This setting, if not set correctly, can cause a lot of slow Log-On Issues and the UAG Portal becoming unresponsive as well.&lt;/p&gt;  &lt;p&gt;Let me share a scenario with you, in which a customer reported a similar issue and how we fixed it.&lt;a name="_GoBack"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Scenario:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We had an issue where the UAG Portal Page was becoming unresponsive while trying to access it externally. Restarting the UAG services would temporarily resolve it, but it would recur on subsequent logins.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Troubleshooting:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The issue manifested itself as the UserMgrCom.exe process causing a CPU Spike of around 100% CPU utilization. When we checked the &lt;b&gt;Authentication Repository&lt;/b&gt; settings in the UAG console we noticed the following setting:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/4478.image_5F00_759F6234.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2806.image_5F00_thumb_5F00_433B8EB5.png" width="322" height="290" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see in the above screenshot the value of &lt;b&gt;Level of nested groups&lt;/b&gt; was defined as 1000. However, Ideally, this value should not be configured above 2 or 3. Group nesting relates to group authorization configured on applications on the portal.&amp;#160; If the applications are configured to allow all users to be authorized there is no need for any nesting.&amp;#160; On the other hand if groups are used for granular application authorization then group nesting would only be required if the group(s) selected for authorization are groups that are nested (members of) another group in Active Directory.&amp;#160; If the groups are direct user containers and not group members, nesting is also not required.&amp;#160; Setting the level of nesting to anything other than its default tells UAG to preform recursive queries on every group a user is a member of until the level of nesting is reached.&amp;#160; This set of recursive query is incredibly resource and time intensive both to UAG and to the Domain controllers that are being accessed.&lt;/p&gt;  &lt;p&gt;In this case, because it was set to such a high value of 1000, it was causing UAG to perform unnecessary checks for Group Memberships for users and this was causing the &lt;b&gt;UserMgrCom.exe&lt;/b&gt; to Spike, and the Portal to become unresponsive.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Author&lt;/u&gt;&lt;/b&gt;&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nitin Singh   &lt;br /&gt;Security Support Escalation Engineer    &lt;br /&gt;Microsoft CSS Forefront Security Edge Team&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Technical Reviewers:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Dan Herzog   &lt;br /&gt;Security Sr. Support Escalation Engineer    &lt;br /&gt;Microsoft CSS Forefront Security Edge Team&lt;/p&gt;  &lt;p&gt;Ben Ben Ari   &lt;br /&gt;Security Sr. Support Engineer    &lt;br /&gt;Microsoft CSS Forefront Security Edge Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3462490" width="1" height="1"&gt;</description></item><item><title>Accessing Enterprise vault archived emails through UAG</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/09/01/accessing-enterprise-vault-archived-emails-through-uag.aspx</link><pubDate>Thu, 01 Sep 2011 17:26:26 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3450685</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3450685</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/09/01/accessing-enterprise-vault-archived-emails-through-uag.aspx#comments</comments><description>&lt;p&gt;I recently worked on a case where the issue was that users could not access Enterprise vault archived emails in OWA Published through UAG. Enterprise Vault is an email archiving software from Symantec and is used as an add on with OWA to access archived emails. Since it is used along with OWA, which we publish through UAG, we also need to configure UAG to allow access to the Enterprise Vault URLs.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Scenario&lt;/b&gt;: The admin has configured UAG to publish OWA. He was also trying to publish Enterprise Vault through UAG to access archived emails along with OWA. However, archived emails were not showing up properly, the image hyperlinks for it were not showing and archived emails were inaccessible.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Troubleshooting Approach and Resolution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1. In order to troubleshoot this, we reproduced the issue on a client machine, and &lt;a name="_GoBack"&gt;&lt;/a&gt;then looked at the web monitor logs on the UAG server. This is what we found &lt;/p&gt;  &lt;p&gt;&lt;b&gt;“&lt;/b&gt;&lt;b&gt;A request from source IP address 18.9.7.2, user test2 on trunk portal; Secure=1 for application Exchange 2010 OWA of type ExchangePub2010 failed. The URL &lt;/b&gt;&lt;b&gt;&lt;i&gt;/owa/EnterpriseVault/Exch2010/v9.0.1.1073/scripts/xyz.js&lt;/i&gt; contains an illegal path. The rule applied is Default rule. The method is GET.”&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2. We checked the Advanced Trunk configuration and the URL set, and found following in the EnterpriseVault rule, which was created by the customer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2543.clip_5F00_image001_5F00_6836324B.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2146.clip_5F00_image001_5F00_thumb_5F00_00C5CF9C.png" width="638" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;i.e. the path /enterprisevault/.* was not correct , as the request in the web monitor log had the path of “&lt;i&gt;/owa/EnterpriseVault/…” .&lt;/i&gt;This means we need to add /owa before /EnterpriseVault/.* &lt;/p&gt;  &lt;p&gt;Apart from that we also needed to change the name of the rule. 1&lt;sup&gt;st&lt;/sup&gt;, it needs to be named after the Exchange applications convention (ExchangePub2010_RuleXX), and 2&lt;sup&gt;nd&lt;/sup&gt;, have a high number so that it does not get overwritten by UAG if the default rule-set changes. We changed our rule to &lt;b&gt;ExchangePub2010&lt;/b&gt;&lt;b&gt;_Rule99&lt;/b&gt;, and access to Enterprise Vault was successful.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;More about Rule name definition&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A URL Set rule has two parts:&lt;/p&gt;  &lt;p&gt;a. &lt;b&gt;Application&lt;/b&gt;: This is to define the application for which this rule is configured. UAG looks for the URL throughout the URL Set rules, and will determine the application type based on that match. If the Rule name does not match any existing application type, UAG will not know what to do. In this case, it is &lt;b&gt;ExchangePub2010&lt;/b&gt;_Rule99&lt;/p&gt;  &lt;p&gt;b. &lt;b&gt;Rule(number)&lt;/b&gt;: Keyword &lt;b&gt;Rule&lt;/b&gt; along with &lt;b&gt;number&lt;/b&gt;. By default ExchangePub2010 has 42 rules, so in order to make sure this rule is not overwritten with future updates of UAG, I used a large number (i.e. 99) and the resulting rule name is ExchangePub2010_&lt;b&gt;Rule99&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/1663.clip_5F00_image002_5F00_6E7D08D9.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3704.clip_5F00_image002_5F00_thumb_5F00_4742BFA4.png" width="702" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;b&gt;Suraj Singh&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3450685" width="1" height="1"&gt;</description></item><item><title>Microsoft Forefront UAG 2010 SP1 has passed Common Criteria Evaluation Assurance Level 2+ (EAL 2+)</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/08/11/microsoft-forefront-uag-2010-sp1-has-passed-common-criteria-evaluation-assurance-level-2-eal-2.aspx</link><pubDate>Thu, 11 Aug 2011 19:36:24 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3446608</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3446608</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/08/11/microsoft-forefront-uag-2010-sp1-has-passed-common-criteria-evaluation-assurance-level-2-eal-2.aspx#comments</comments><description>&lt;p&gt;I’m happy to announce that Microsoft Forefront UAG&amp;#160; 2010 SP1 has passed &lt;a href="http://en.wikipedia.org/wiki/Common_Criteria"&gt;Common Criteria&lt;/a&gt; Evaluation Assurance Level 2+ (EAL 2+). &lt;/p&gt;  &lt;p&gt;The certification work has been performed by the Federal Office for Information Security (BSI), the Common Criteria certification body of the German government and TÜViT Evaluation Body for IT security which evaluates products worldwide according to the ITSEC and the Common Criteria (CC). More information is available &lt;a href="http://www.microsoft.com/forefront/unified-access-gateway/en/us/common-criteria.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Here is a scan of the certificate:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0081.clip_5F00_image001_5F00_195331C4.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0804.clip_5F00_image001_5F00_thumb_5F00_66EF5E44.jpg" width="482" height="656" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3446608" width="1" height="1"&gt;</description></item><item><title>Detective agency</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/06/08/detective-agency.aspx</link><pubDate>Wed, 08 Jun 2011 18:24:04 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3434410</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3434410</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/06/08/detective-agency.aspx#comments</comments><description>&lt;p&gt;As you probably know, one of UAG’s most important features is the endpoint detection mechanism. This engine runs a special detection script on connecting clients, which reports back to UAG certain properties of the endpoint. Then, the administrator can configure the UAG to reject or accept certain endpoints based on the detected properties.&lt;/p&gt;  &lt;p&gt;A lesser known aspect of endpoint detection is the ability to create custom detection scripts, which can detect properties not originally covered by the default detection script. Our documentation discusses how to create a script, but provides little detail as to how they actually work. Here’s the low-down how-to!&lt;/p&gt;  &lt;p&gt;The detection mechanism works by running a special VB-Script file on the client endpoint, so the customize it, you need to create your own script. What this script does is collect information, and send it back to UAG by populating certain variables, and then, UAG can use these variables as a basis for a decision as to ACCEPT or REJECT that endpoint. The process for creating a custom detection is:&lt;/p&gt;  &lt;p&gt;1. Decide what values you want to collect from the endpoint&lt;/p&gt;  &lt;p&gt;2. Write your custom script, and put it in the designated folder on UAG&lt;/p&gt;  &lt;p&gt;3. Configure UAG to use that script&lt;/p&gt;  &lt;p&gt;4. Write a custom endpoint policy to evaluate the custom values&lt;/p&gt;  &lt;p&gt;5. Assign the custom policy to your trunks and applications&lt;/p&gt;  &lt;p&gt;The values that you can collect may be anything you want, as long as you can collect it on the endpoint. You then send these values to UAG by using the following syntax:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Results(&amp;quot;System_Windows_Version&amp;quot;) = Whale.WindowsVersion&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Results(&amp;quot;Network_Domains_NetBIOS&amp;quot;)=Whale.System.MachineDomain&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;What this does is query the special COM object that UAG installs on the client, and then put the result in the parameter list using the RESULTS function. The above are taken directly from the default detection script (which you can find and on your own server under &lt;b&gt;&amp;lt;UAG Path&amp;gt;\von\InternalSite\Detection.vbs&lt;/b&gt;, but you could also use your own parameter names. You do need to make sure that the parameter names do not contain spaces, as this makes writing the endpoint policy a bit of a problem.&lt;/p&gt;  &lt;p&gt;Another thing that’s important to note is that the detection script runs on the client endpoint under the context of the browser, and as such, it is restricted by default as part of the browser’s design. This means that your script can’t just use any old COM objects that you can use when running regular scripts on your computer. For example, you can’t use the &lt;b&gt;FileSystemObject&lt;/b&gt; object and methods to read or write files to the client system. However, the built in COM object WHALE does provide some useful functionality. Here are some of methods you can use. Please refer to the default detection script to read more about how they work:     &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;AttchWiperObj.CacheIE2(Parameters)&lt;/p&gt;            &lt;p&gt;AttchWiperObj.CacheIE3(Parameters)&lt;/p&gt;            &lt;p&gt;Whale.AntiVirus.NortonEnabled&lt;/p&gt;            &lt;p&gt;Whale.AttachmentWiperVersion&lt;/p&gt;            &lt;p&gt;Whale.BrowserPID&lt;/p&gt;            &lt;p&gt;Whale.DetectorVersion&lt;/p&gt;            &lt;p&gt;Whale.ExternalHost&lt;/p&gt;            &lt;p&gt;Whale.ExternalHostname&lt;/p&gt;            &lt;p&gt;Whale.FileSystem.DateLastModified(AddSlashToPath(installDir) &amp;amp; &amp;quot;main.dll&amp;quot;, &amp;quot;&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.FileSystem.Exist(exepath &amp;amp; &amp;quot;ccSvcHst.exe&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.FileSystem.GetINIFileString(AVInstallDir &amp;amp; iniFileName, &amp;quot;AntiVirus_Tables&amp;quot;, &amp;quot;Version&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.FileSystem.ProductVersion(item.ExecutablePath))&lt;/p&gt;            &lt;p&gt;Whale.PFW.McAfeeEnabled(win9x)&lt;/p&gt;            &lt;p&gt;Whale.Processes.Filter(&amp;quot;ATRACK.EXE&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.Registry.RegRead(rkHKEY_LOCAL_MACHINE,Regpath ,&amp;quot;enabled&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.SecurityCenter&lt;/p&gt;            &lt;p&gt;Whale.ShowDebugMessages = False&lt;/p&gt;            &lt;p&gt;Whale.SSLVPNVersion&lt;/p&gt;            &lt;p&gt;Whale.System.ExpandEnvironmentStr(&amp;quot;ALLUSERSPROFILE&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.System.IsModuleLoaded(&amp;quot;syfort.dll&amp;quot;)&lt;/p&gt;            &lt;p&gt;Whale.System.LoggedOnUserPrivileges&lt;/p&gt;            &lt;p&gt;Whale.System.MachineDNSSuffix&lt;/p&gt;            &lt;p&gt;Whale.System.MachineDomain&lt;/p&gt;            &lt;p&gt;Whale.WindowsServicePackVersion&lt;/p&gt;            &lt;p&gt;Whale.WindowsSoftware&lt;/p&gt;            &lt;p&gt;Whale.WindowsVersion&lt;/p&gt;            &lt;p&gt;Whale.XPSP2Check&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;So, for example, if you want to check if certain software is installed on an endpoint, all you have to do is figure out the location of a file that would indicate that the application is there, and use the &lt;b&gt;Whale.FileSystem.Exist&lt;/b&gt; method to check it. Alternatively, if you know a specific registry key that indicates the software is there, you can look for that using the &lt;b&gt;Whale.Registry.RegRead&lt;/b&gt; method. Ultimately, you need to keep in mind that your control of the user’s system is limited, and all of these values can be spoofed by an advanced and savvy user, so it’s worth taking that into account.&lt;/p&gt;  &lt;p&gt;To debug your script, you can use the command Whale.DebugEcho, like this:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Whale.DebugEcho &amp;quot;Starting detection at &amp;quot; &amp;amp; now&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;However, this is not visible to the user…the echo is used within a client component trace, if one is turned on. To provide you with simple on-screen output, simple use the MSGBOX standard VBScript command. Once your script is ready, or at least starting to take shape, the next step is to put it on the UAG server. To do so, place it under &lt;b&gt;&amp;lt;UAG Folder&amp;gt;\von\InternalSite\CustomUpdate&lt;/b&gt;. Now, you need to let UAG know that it is supposed to use it. To do this, create a text file with the following syntax:     &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;%&lt;/p&gt;            &lt;p&gt;g_scriptList(&amp;quot;/InternalSite/CustomUpdate/&amp;lt;&lt;b&gt;YourDetectionScript.vbs&amp;gt;&lt;/b&gt;&amp;quot;) = false&lt;/p&gt;            &lt;p&gt;%&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Save the file under &lt;b&gt;&amp;lt;UAG Path&amp;gt;\von\InternalSite\inc\CustomUpdate&lt;/b&gt;, and name it according to your trunk’s name and type, based on the following template:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;lt;TrunkName&amp;gt;&amp;lt;https:1/http:0&amp;gt;Detect.inc&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For example, If you are creating this for an HTTP trunk named “publicportal”, name the file “publicportal0Detect.inc”. &lt;/p&gt;  &lt;p&gt;Now that the files are all in place, you can activate your configuration, and test the script. Any MSGBOX command will pop-up on the client during the detection, and the resulting parameters will be reported to the session manager. You can open the session in the UAG Web Monitor, and go to the PARAMETERS page, and see the values reported by your script. Note that the default script also runs, so you will see the values reported by it, in addition to yours. &lt;/p&gt;  &lt;p&gt;If your values are reported as expected, the next step is to create a custom endpoint policy that looks for these values and acts on them. Keep in mind that an endpoint policy is just a collection of values and Boolean operators – it’s not a real script. Such a policy is evaluated by UAG, and the variables in it are replaced by values collected from the endpoint. Once collected, the server evaluates the “total” value of the policy, and will allow the user access if they evaluate to a Boolean “1” (or True). &lt;/p&gt;  &lt;p&gt;For example, let’s say you want to allow access only to computer who have Office 2007 installed. To do this, you might check if the file &lt;b&gt;winword.exe&lt;/b&gt; exists. In a policy, this would look like this:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Results(“Office2007_installed”) = Whale.FileSystem.Exist (“c:\Program Files\Microsoft Office\Office12\WINWORD.EXE”)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Then, you would create a simple endpoint policy saying simply:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/1055.clip_5F00_image002_5F00_2A205CDF.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/1067.clip_5F00_image002_5F00_thumb_5F00_30D36662.jpg" width="396" height="298" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then, assign that policy to an application, or to the trunk itself! You could also go further and check the version of the file, or look for certain keys under &lt;b&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0&lt;/b&gt; to see other properties of office…it’s really up to you how deep you want to go into this. &lt;/p&gt;  &lt;p&gt;Blog post written by &lt;a href="http://blogs.technet.com/b/ben/"&gt;Ben Ari&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3434410" width="1" height="1"&gt;</description></item><item><title>Regular Expression syntax to exclude values from a wildcard expression</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/05/20/regular-expression-syntax-to-exclude-values-from-a-wildcard-expression.aspx</link><pubDate>Fri, 20 May 2011 22:50:40 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3430736</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3430736</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/05/20/regular-expression-syntax-to-exclude-values-from-a-wildcard-expression.aspx#comments</comments><description>&lt;p&gt;RegEx (Regular Expressions) is commonly used when configuring UAG portal applications. In addition, RegEx is also used when configuring application customizations such as AppWrap and SRA. &lt;/p&gt;  &lt;p&gt;I recently worked with a customer that posed a fairly unique question. He wanted to know how to create a regular expression that would match the following:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Include any server in domain.com, excluding server02.domain.com&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The Regular Expression that will accomplish this is as follows:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;^(?:(?!server02).)*\.domain\.com&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Explanation:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;(?!server02)&lt;/i&gt;&lt;/b&gt; = Impossible to match ‘server02’&lt;/p&gt;  &lt;p&gt;&lt;b&gt;(?:&lt;/b&gt;(?!server02)&lt;b&gt;.) =&lt;/b&gt; ‘?:’ indicates not to create a backreference. ‘Dot’ indicates to match any single character.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;^&lt;/b&gt;(?:(?!server02).)&lt;b&gt;* = &lt;/b&gt;‘Carat’ indicates to assert the position at the beginning of the string. ‘Asterisk’ indicates to match between zero and unlimited number of times.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;\.domain\.com = &lt;/b&gt;“.domain.com”&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;strong&gt;Richard Barker&lt;/strong&gt;&lt;a name="_GoBack"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3430736" width="1" height="1"&gt;</description></item><item><title>AppWrap and SRA</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/05/12/appwrap-and-sra.aspx</link><pubDate>Thu, 12 May 2011 21:57:05 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3428874</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3428874</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/05/12/appwrap-and-sra.aspx#comments</comments><description>&lt;p&gt;The Application Wrapper (AppWrap) and SRA are two mechanisms UAG uses to dynamically rewrite the content of textual web data it processes. When UAG delivers a page to the client, one of the core UAG components known as “the filter” parses the content of the page, and in some circumstances, alters the content. This mechanism is mostly designed to allow better compatibility for application publishing, as certain applications were not designed to be published by UAG (or by any other reverse proxy, for that matter), and won’t work properly without certain changes. For example, when publishing SharePoint, UAG needs to perform certain manipulations to allow Office applications to open documents from the site properly. To this end, UAG inserts a line into one of SharePoint’s JavaScript files (core.js) that causes the browser to call the file &lt;b&gt;sharepoint.asp&lt;/b&gt; (a specially crafted UAG code file):&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;dHtmlLoadScript(“/InternalSite/sharepoint.asp?site_name=portal&amp;amp;secure=1”);&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For the AppWrap and SRA mechanisms to work, UAG comes with a set of XML files that contain instructions for them. The XMLs contain code that instructs UAG to look for certain file patterns (in HTTP requests as well as in the responses to them) and make certain changes to them, like, for instance, “&lt;i&gt;Where you see the word ‘Foo’, change it to ‘Bar’&lt;/i&gt;”. UAG comes with a built-in set of 2 files (one for &lt;b&gt;SRA&lt;/b&gt; and one for &lt;b&gt;AppWrap&lt;/b&gt;), but the administrator can also create custom files in addition to them, to make his own changes. These changes can be used to address certain issues with the applications behavior when published through UAG, and also affect the look and feel of the application. For example, a UAG administrator may feel that when he publishes Outlook Web Access via UAG, he doesn’t want the user’s name to appear at the top of the screen. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7750.image_5F00_1082743B.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5287.image_5F00_thumb_5F00_785F09DF.png" width="553" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To make this happen, the administrator will have to configure UAG to search for this text:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&amp;lt;span id=&amp;quot;spnUserTileTxt&amp;quot; class=&amp;quot;userTileTxt&amp;quot;&amp;gt; , and add an HTML tag like &lt;b&gt;style=display:none;&lt;/b&gt; to hide it. &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;We’ll get to the how-to for this soon, but the point is, by manipulating the HTML, as well as HTTP headers, one can accomplish a lot!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;In-difference?!?!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You might be wondering what is the difference between &lt;b&gt;SRA&lt;/b&gt; and &lt;b&gt;AppWrap&lt;/b&gt;? Why do we need two if they can both change content? The difference between them is the order in which things happen. When UAG retrieves a file from a back-end server, the 1&lt;sup&gt;st&lt;/sup&gt; thing that happens is the SRA engine processing the content. Next, the HAT engine signs the various URLs it locates, and then, the Application Wrapper performs additional changes, if such are required. If all we want to do is alter some static contents, then either of them can do the trick. If, however, we want our customization to handle URL-specific issues, it would be ideally handled by a custom SRA. &lt;/p&gt;  &lt;p&gt;Here’s an example: We might find, in some circumstances that UAG is failing to sign some URL, because the URL is built using HTML tags that are non-standard, or built dynamically using a client-side script (for example, &lt;b&gt;PeopleSoft&lt;/b&gt; software does this). When something like this happens, the script that builds the request may contain URL pieces that are unrecognizable. By using the SRA, we can replace the URLs in the script with something UAG can recognize, and then the HAT signature process can continue as normal. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;How does it work?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As mentioned above, UAG comes with a pre-existing default set of files, which contain instructions for some of the built-in application templates, like CRM, OWA, SharePoint, Citrix and others. If you need to add other changes, you first need to decide whether you are going to use AppWrap or SRA. Some changes should be done in SRA – for example, if you are trying to fix an issue where an application’s links are not getting signed properly. Many changes can be done just as well with either mechanism. &lt;/p&gt;  &lt;p&gt;Once decided, you need to compose an XML file with the proper “instructions”, and place the file on the UAG server. Once the file is placed in the right place, it takes effect immediately. The default files are created by UAG automatically in the following folder:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&amp;lt;UAG Path&amp;gt; \von\Conf\Websites\&amp;lt;&lt;b&gt;Trunk_Name&lt;/b&gt;&amp;gt;\conf\&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;The configuration is separate for every trunk, so there is a separate set of XMLs for each trunk you may have. If you look at one of your trunks, you will find 2 files:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;WhlFiltSecureRemote_HTTP.xml &lt;/b&gt;or &lt;b&gt;WhlFiltSecureRemote_HTTPS.xml&lt;/b&gt;, depending on whether the trunk is an HTTP or an HTTPS trunk. This is the configuration file for SRA&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;WhlFiltAppWrap_HTTP.xml&lt;/b&gt; or &lt;b&gt;WhlFiltAppWrap_HTTPS.xml&lt;/b&gt;, depending on whether the trunk is an HTTP or an HTTPS trunk. This is the configuration file for AppWrap&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you have a UAG server around, you can go ahead right now and examine the content of the files. You will find them to be quite lengthy, and possibly hard to understand…that’s perfectly normal! However, don’t be tempted to edit these files directly. These files are built from another source, so they may get overwritten and any changes you make may be lost. To support custom configuration, you need to create a folder named &lt;b&gt;CustomUpdate&lt;/b&gt; under &lt;b&gt;…\Websites\&amp;lt;Trunk Name&amp;gt;\conf&lt;/b&gt;, and place your custom files there. The server won’t explode if you edit the default files, but such an edit will be overwritten on your next configuration-activation. Also, such changes are unsupported. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Base 64 Encoding&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Another thing to keep in mind is that since we use XML files to configure the Application Wrapper and SRA, we need to make sure that the contents of the data we are specifying doesn’t break the XML formatting. For example, the characters &amp;lt; and &amp;gt; are used by XML to specify opening and closing tags (more &lt;a href="http://support.microsoft.com/kb/316063"&gt;here&lt;/a&gt;). If our Search or Replace strings contain these characters, the whole thing may break apart (meaning that none of custom configuration will take effect). The solution to this is Base-64 encoding of the text. Base64 encoding is quite simple - It’s quite easy – just use some online encoding/decoding tools like &lt;a href="http://base64-encoder-online.waraxe.us/"&gt;this&lt;/a&gt;. Paste into it your string, and then copy-paste back the encoded text. You can also use the UAG Editor, which comes with UAG and has built-in functions for text editing. This editor is found here:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;lt;UAG Path&amp;gt;\Common\Bin\editor.exe&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To use it, simply select some text, and click on “To 64”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0728.image_5F00_71AC005C.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5102.image_5F00_thumb_5F00_51FD2694.png" width="419" height="286" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Down into the mine shaft…&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Here’s a typical custom AppWrap XML file:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;APP_WRAP ver=&amp;quot;3.0&amp;quot; id=&amp;quot; WhlFiltAppWrap_HTTPS.xml&amp;quot;&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;MANIPULATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;MANIPULATION_PER_APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION_TYPE&amp;gt;SharePoint14aam&amp;lt;/APPLICATION_TYPE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;SignOut\.aspx&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH&amp;gt;Function Activate&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE&amp;gt;Function Deactivate&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/MANIPULATION_PER_APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/MANIPULATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/APP_WRAP&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As you can see, it has standard XML formatting, with nesting &amp;lt;&amp;gt; tags. It starts with a declaration of the type of file, and then starts a “manipulation” section. We specify the application type this applies to, and then, this section has a DataChange section (it could also have a Header Change section). The Data Change applies to the URL SignOut.aspx, and the \ behind the dot is not a speller…it’s a RegEx “escape” character, so that the dot will be treated literally. Later on comes a SAR (Search And Replace) section, which specifies the string to search for, and the string to replace it with. Then, all the sections are closed. Simple, huh?&lt;/p&gt;  &lt;p&gt;The above example is a very simple one. In real life, there are a few more considerations. For example, when creating a custom file, it’s a very good idea to put in some comments as to what the change is for. This could be very important If the published application changes (which happens a lot!) and you need to revisit the customization, or if someone else needs to take ownership of the server. The syntax for comments is like this:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;lt;!--The following change is for compatibility with EdgeSpace 4.1, added by Ben Ari on 13 Sep 1973 --&amp;gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Another consideration is the URL specification. When specifying a URL, you can use the full URL for the target file, or just part of it using RegEx. It is recommended to specify the file as accurately as possible, and avoid a too-general wildcard (like &lt;b&gt;.*\.aspx&lt;/b&gt;), so as to reduce the risk of the change applying to unintended files. When specifying URLs, remember that the characters &lt;b&gt;. * ? + ( ) { } [ ] ^ $ \&lt;/b&gt; are part of the RegEx command set, , so if you want them to be treated literally, you need to ‘escape’ them by adding a back-slash symbol before the character.&lt;/p&gt;  &lt;p&gt;Normally, the URL search is case sensitive, so specifying &lt;b&gt;SIGNOUT&lt;/b&gt; will not “find” a URL with the string &lt;b&gt;signout&lt;/b&gt;, but you can add the &lt;b&gt;case_sensitive&lt;/b&gt; tag to override this default. This is used like this:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;lt;URL case_sensitive=&amp;quot;false&amp;quot;&amp;gt;.*SignOut\.aspx&amp;lt;/URL&amp;gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Another thing to keep in mind is that you can perform several S&amp;amp;Rs on a single URL using a single clause by specifying additional SAR paragraphs like this:   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&lt;a name="OLE_LINK2"&gt;&lt;/a&gt;&lt;a name="OLE_LINK1"&gt;&amp;lt;APP_WRAP ver=&amp;quot;3.0&amp;quot; id=&amp;quot; WhlFiltAppWrap_HTTPS.xml&amp;quot;&amp;gt;&lt;/a&gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;MANIPULATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;MANIPULATION_PER_APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION_TYPE&amp;gt;GenericWebApp&amp;lt;/APPLICATION_TYPE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;/hr/Editform\.aspx\?osver=6.*&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH&amp;gt;DHScript&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt; X2dhcS5wdXNoKFsnX3NldEFjY291bnQnLCAnVUEtMTQyMjE4LTMnXSk7&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt; X2dhcS5wdXNoKFsnX3NldEFjY291bnQnLCAnJ10pOw==&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/MANIPULATION_PER_APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/MANIPULATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/APP_WRAP&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;As you can see, the above example uses a similar syntax to completely remove parts of the HTML by simply using a blank REPLACE clause. Also, the 2&lt;sup&gt;nd&lt;/sup&gt; SAR in this example is for a complex text, I encoded it using Base64.&lt;/p&gt;  &lt;p&gt;It is &lt;b&gt;&lt;u&gt;VERY important&lt;/u&gt;&lt;/b&gt; to remember that search-and-replace is a &lt;b&gt;&lt;u&gt;double-edged&lt;/u&gt;&lt;/b&gt; sword. When an S&amp;amp;R function is applied, it will perform the replace blindly, as long as the string or regex pattern configured in the SEARCH tag is matched against the HTTP data. This may inadvertently make changes to another section of the page or even to another page, causing undesired behavior. In certain cases, it may even corrupt data, if the change applies to code that is being sent back to the server (like SQL update queries, for example). One must be sure to plan the change very carefully, and make sure it will be applied only to what is relevant by limiting it to the appropriate application server and URL, and if possible, using detailed SEARCH parameters. Extensive testing of the change is also highly recommended, so that you don’t find out a week after rollout into production that it causes some other page to mess-up.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What else can AppWrap do?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;AppWrap has several other options that are useful. For example, it can do a Header Change (which includes editing an existing header, deleting a header, or adding one). For example, an AppWrap can be used to remove or change the value of a cookie to something else, or alter the value of the referrer header to something other than it is normally. There are additional options, which I can’t cover here. If you want to learn more, have a look at the Advanced User Guide for IAG. For the most part, the syntax for UAG is almost identical. The guide can be found &lt;a href="http://download.microsoft.com/download/2/F/9/2F9D9113-B84B-4838-98A0-A3AEFA6608E2/IAG_AdvancedUserGuide.pdf"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Another thing AppWrap can do is change content based on dynamic variables. This is useful when you need to change a link to one that refers to UAG itself. Instead of actually putting in UAG’s URL, you can simply use the variable “&lt;i&gt;WhlOwnURL&lt;/i&gt;”. This is a better design, as it’s more flexible and will work even if you change the server’s public URL, or if you need to apply the same change to a lab server and a production server. Other variables that UAG supports are:&lt;/p&gt;  &lt;p&gt;· WhlSessionTimeout&lt;/p&gt;  &lt;p&gt;· WhlLogoffURL&lt;/p&gt;  &lt;p&gt;· WhlScheduledLogoffTimer&lt;/p&gt;  &lt;p&gt;· WhlSiteName&lt;/p&gt;  &lt;p&gt;· WhlSecure&lt;/p&gt;  &lt;p&gt;You can read more about these variables on page 229 of the Advanced User Guide that I mentioned above. Here’s an example of the use of &lt;b&gt;WhlOwnURL&lt;/b&gt;:    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL case_sensitive=&amp;quot;false&amp;quot;&amp;gt;/exchange/.*?Cmd=navbar&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR conditional_variable=&amp;quot;UsePortalFrame&amp;quot; conditional_var_value=&amp;quot;False&amp;quot;&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH&amp;gt;vw_navbar.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE&amp;gt;vw_navbar.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script language=&amp;quot;JavaScript&amp;quot; src=&amp;quot;&lt;b&gt;WhlOwnURL&lt;/b&gt;scripts/CacheClean.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;script language=&amp;quot;JavaScript&amp;quot; src=&amp;quot;&lt;b&gt;WhlOwnURL&lt;/b&gt;logoffParams.asp?site_name=&lt;b&gt;WhlSiteName&lt;/b&gt;&amp;amp;secure=&lt;b&gt;WhlSecure&lt;/b&gt;&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;script language=&amp;quot;JavaScript&amp;quot; src=&amp;quot;&lt;b&gt;WhlOwnURL&lt;/b&gt;scripts/logoff.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;This example is taken from the UAG default AppWrap template. This section applies to publishing OWA 2003, and its purpose is to hide the OWA log off button and to add some JavaScript related to UAG session termination. To make the read easier, I’ve decoded the text, which is Base64 encoded in the original file. You can see how it refers to several variables – can you guess what they mean?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Moving forward…SRA!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A custom SRA file would have a layout that’s quite similar to an AppWrap file. Here’s one, for example:   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;WHLFILTSECUREREMOTE ver=&amp;quot;2.2&amp;quot;&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION_TYPE&amp;gt;SharePoint14aam&amp;lt;/APPLICATION_TYPE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;NAME&amp;gt;drawshape\.aspx&amp;lt;/NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt; PHRpdGxlPg==&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt; PHRpdGxlPkRlcGFydG1lbnQgb2YgZmluYW5jZSAtIA==&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/WHLFILTSECUREREMOTE&amp;gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;SRA does not allow the use of variables, but it can be configured to match a specific server and port, which AppWrap cannot do. Here are a few examples:   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SERVER&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SERVER_NAME mask=&amp;quot;255.255.255.0&amp;quot;&amp;gt;192\.168\.1\.75&amp;lt;/SERVER_NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;PORT&amp;gt;443&amp;lt;/PORT&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;NAME&amp;gt;/Mail\.html&amp;lt;/NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;PGhlYWQ+&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;YmFzZTY0&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SERVER&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SERVER&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SERVER_NAME&amp;gt;exchange01&amp;lt;/SERVER_NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;PORT&amp;gt;80&amp;lt;/PORT&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;NAME&amp;gt;/Mail\.html&amp;lt;/NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;PGhlYWQ+&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;YmFzZTY0&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SERVER&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION_TYPE&amp;gt;GenericWebApp&amp;lt;/APPLICATION_TYPE&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;NAME&amp;gt;/mail/.*/Inbox/.*\.EML\?cmd=preview&amp;lt;/NAME&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;PGhlYWQ+&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;YmFzZTY0&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;In the 1st example above, we are matching the server by its IP, and in the 2&lt;sup&gt;nd&lt;/sup&gt;, by its hostname. Note that this refers to the INTERNAL name of the server (which is what you would define in the “Web Servers” tab of the application on UAG):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3146.image_5F00_19527C87.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/6114.image_5F00_thumb_5F00_6BD15CC3.png" width="717" height="340" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you may have deduced from the example, the MASK tag in the SERVER_NAME tag can be omitted, and the PORT tag can be omitted as well. As with AppWrap, multiple SERVER_NAME paragraphs can be nested inside a SERVER paragraph and multiple APPLICATION_TYPE paragraphs can be nested inside an APPLICATION paragraph. Also, multiple URL paragraphs can be nested inside the APPLICATION_TYPE and multiple URL paragraphs can be nested inside a SERVER_NAME paragraph. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Adding a HAT signature&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A typical troubleshooting scenario is one in which links are not being signed for some reason. This can happen if the links are built by some client side JavaScript, out of URL pieces. For example:   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;var hrapp_web_root = 'http';&lt;/p&gt;            &lt;p&gt;var IntServer_url = ‘fileservny01’;&lt;/p&gt;            &lt;p&gt;var hrapp_js_root = '/vrdf/js';&lt;/p&gt;            &lt;p&gt;var hrapp_jsp_root = '/vrdf/jsp/hrapp';&lt;/p&gt;            &lt;p&gt;if (mode == secure) {&lt;/p&gt;            &lt;p&gt;hrapp_web_root == hrapp_web_root+'s'&lt;/p&gt;            &lt;p&gt;}&lt;/p&gt;            &lt;p&gt;var sTarget = hrapp_web_root+'://'+ var IntServer_url + var hrapp_js_root&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;In the above, the resulting URL could be either “&lt;b&gt;http://fileservny01/vrdf/js&lt;/b&gt;” or “&lt;b&gt;https://fileservny01/vrdf/js&lt;/b&gt;”, but the text page doesn’t actually contain any URL strings that UAG can recognize. To fix it, we would need to convert the resulting string to one that has the HAT signature. For example, &lt;b&gt;https://fileservny01/vrdf/js&lt;/b&gt; would have to become:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;https://uag.createhive.com/uniquesig977dbf8e31f3e11905690532814f23eaedf4b8fa30977329b63b23e65d8cbc 8868 fb5af9e91fd3a1c405dc86ecaed7a1/uniquesig0/vrdf/js&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To make this happen, we would have to create an AppWrap that replaces the URL pieces. We would need to replace line no. 2 in the above JavaScript to something like this:&lt;/p&gt;  &lt;p&gt;var IntServer_url = ‘uag.createhive.com/uniquesig977dbf8e31f3e11905690532814f23eaedf4b8fa30977329b63b23e65d8cbc8868 fb5af9e91fd3a1c405dc86ecaed7a1/uniquesig0’;&lt;/p&gt;  &lt;p&gt;This is not hard, and you already know what you need to make this happen. However, we consider putting in a HAT path directly to not be best practice. Instead, we have an SRA method which can be used to add the signature automatically. Here's the syntax:   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SERVER&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SERVER_NAME&amp;gt;formserver\.createhive\.local&amp;lt;/SERVER_NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;PORT&amp;gt;80&amp;lt;/PORT&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;NAME&amp;gt;/file\.js&amp;lt;/NAME&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;ADD_SIGNATURE encoding=&amp;quot;&amp;quot; location=&amp;quot;before&amp;quot;&amp;gt;test/id/user&amp;lt;/ADD_SIGNATURE&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;ADD_SIGNATURE location=&amp;quot;after&amp;quot; mode=&amp;quot;regex&amp;quot;&amp;gt;ows_FileRef&amp;lt;/ADD_SIGNATURE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SERVER&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The example above does not apply to the JavaScript I included earlier, but you can see from it that you can use the location tag to indicate that the signature can be added either BEFORE or AFTER a certain text. The search is done on static text by default, but can also be done using RegEx if you specify the mode as such, as in the 2&lt;sup&gt;nd&lt;/sup&gt; ADD_SIGNATURE tag above. As usual, encoding to Base64 is often needful. The same URL syntax can be nested inside an APPLICATION tag, instead of SERVER. If so, the application type must be specified as before. It’s important to note that the signature that is added is in this format:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;uniquesig977dbf8e31f3e11905690532814f23eaedf4b8fa30977329b63b23e65d8cbc8868fb5af9e91fd3a1c405dc86ecaed7a1/uniquesig0/&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;It does &lt;b&gt;not&lt;/b&gt; include the public host name of the UAG portal, but if the URL is relative, it will be automatically applied by the browser. However, if the link that we want to sign is relative as well, and starts with a slash, we should adjust the location appropriately. For example, if the targeted code is something like:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;lt;script&amp;gt;function serverset(){URLpart=’/ipage/customer/order/cart/or4020AddItem.action’;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;And we want to sign the “URLpart” piece, we would either insert the signature after &lt;b&gt;URLpart=&amp;quot;/&lt;/b&gt; or before &lt;b&gt;ipage/customer/order/cart/or4020AddItem.action&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How to find the application type&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If the APPLICATION method is chosen, rather than SERVER, you must locate the application type that you wish to match to. If this is a custom app you have created, then you have had to choose the application type, and you can see it in the application list on UAG:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/8741.image_5F00_5E6B49BD.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3058.image_5F00_thumb_5F00_658A8635.png" width="373" height="242" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If, however, you want to apply your code to one of the built-in application types, you will need to find the ID manually. To do this, open the applications properties from the trunk's application list. Note the application's name (see screenshot below).&lt;/p&gt;  &lt;p&gt;Now, open the file &amp;lt;UAG Path&amp;gt;\von\Conf\WizardDefaults\WizardDefaultParam.ini with a text editor of your choice, and use the FIND function to locate that text. When you have found it, look above it, for the application type in square brackets:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/2068.image_5F00_73C8FF25.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0334.image_5F00_thumb_5F00_1F79C922.png" width="824" height="291" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;What else can SRA do?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;An important thing to remember about SRA is that it is THE brains behind the link signing that UAG does, and even though it sometimes misses some links, it is possible to &amp;quot;teach&amp;quot; it to do it better. The default SRA configuration files (&lt;b&gt;&amp;lt;UAG Path&amp;gt;\von\Conf\SRATemplates\WhlFiltSecureRemote_HTTP.xml&lt;/b&gt; and &lt;b&gt;WhlFiltSecureRemote_HTTPS.xml&lt;/b&gt;) have a long list of tags that instruct the engine how to detect links, so that they can be signed. If a link is missed by the engine, it may be possible to extend the list of tags so that the engine will detect it by default, rather than include a search-and-replace fix for a specific link. Customizing the default parsers is beyond the scope of this guide, and will be discussed another time. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Conflicts and combinations&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When creating a custom AppWrap or SRA file, one must keep in mind that UAG still has to use the default built-in XML files, and we need to be careful about creating a conflicting set of files. Sometimes, we might want to intentionally override the default template, but at other times, we need to be careful, otherwise, the custom file may block built-in functionality that is important.&lt;/p&gt;  &lt;p&gt;One common mistake is to define an extremely wide range of URLs by using something along the lines of “&amp;lt;NAME&amp;gt;.*&amp;lt;/NAME&amp;gt; in the URL section. Something like this will actually override ALL other AppWrap or SRA settings for the same application-type or server-name defined anywhere else. Special care needs to be taken when working on one of the built-in application types. For example, doing this on a SharePoint or OWA application will cause huge problems. If you do need to use AppWrap or SRA to make changes to an application that has some SRA/AppWrap functionality in the default files, and you need to change the same URLs in the default template, the right way to go is to COPY the default settings into the custom file, and adjust (or add to) them in it. There’s no simple way to do this, so be prepared for some trial and error. You might also need to combine two sets of instructions. For example, you might need to combine the default set, and your custom instructions, or one customization with another. Look at the following example (AppWrap):   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="734"&gt;           &lt;p&gt;&amp;lt;MANIPULATION_PER_APPLICATION&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;APPLICATION_TYPE&amp;gt;ExchangePub2003SP1&amp;lt;/APPLICATION_TYPE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;!-- for Exchange 2003 conditional appwrap hide log off --&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL case_sensitive=&amp;quot;false&amp;quot;&amp;gt;.*/util_owa.js&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR conditional_variable=&amp;quot;UsePortalFrame&amp;quot; conditional_var_value=&amp;quot;False&amp;quot;&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;cGFyZW50LmQmFzZSArICI/Q21kP &amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;cGFyZW50LmZyY5kU2Vzc2lvbigp&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;!-- for Exchange 2003 conditional appwrap hide log off --&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL case_sensitive=&amp;quot;false&amp;quot;&amp;gt;/exchange/.*/(inbox/?|calendarcmd=rules|\?cmd=options).*&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR conditional_variable=&amp;quot;UsePortalFrame&amp;quot; conditional_var_value=&amp;quot;True&amp;quot;&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;aWQ9ImxvZ29mZiI=&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;aWQ9ImxvZ29mZiIgc3R5bm9uZSI=&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;!-- for Exchange 2003 conditional appwrap hide log off add UAG logoff session --&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;URL case_sensitive=&amp;quot;false&amp;quot;&amp;gt;/exchange/.*?Cmd=navbar&amp;lt;/URL&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR conditional_variable=&amp;quot;UsePortalFrame&amp;quot; conditional_var_value=&amp;quot;False&amp;quot;&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;dndfbmF2YmFyLmpzIj48L3NjcmlwdD4=&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;+DQo8c2NyaB0IiBzcmM9Ildob==&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;SAR&amp;gt; &lt;/p&gt;            &lt;p&gt;&amp;lt;SEARCH encoding=&amp;quot;base64&amp;quot;&amp;gt;dn48LmpzIj3NmlwdDjc4=&amp;lt;/SEARCH&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;REPLACE encoding=&amp;quot;base64&amp;quot;&amp;gt;+Dldob==&amp;lt;/REPLACE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/SAR&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/DATA_CHANGE&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;/MANIPULATION_PER_APPLICATION&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The above example is taken from the default AppWrap file, though I’ve cut most of the S&amp;amp;R strings short to make it more readable (so the example is not ‘really real’…). It demonstrates how, when we want a manipulation section to address separate URLs, it has to have separate “data change” sections, each addressing its own URL. If we want to do multiple search-and-replace actions, this is OK too, as long as they are in separate SAR sections, as shown in the 3&lt;sup&gt;rd&lt;/sup&gt; data change section above.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Further Reading:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The official UAG documentation contains some information about using the application wrapper:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ff607339.aspx"&gt;http://technet.microsoft.com/en-us/library/ff607339.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ff607388.aspx"&gt;http://technet.microsoft.com/en-us/library/ff607388.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you’d like more details, samples and information about the SRA, you can find it in the original IAG Advanced User Guide, pages 289-313 and pages 219-254. This guide is very extensive and detailed, and even though it was written for IAG, most of the content applies to UAG, except some minor changes (&lt;a href="http://blogs.technet.com/b/edgeaccessblog/archive/2009/11/17/appwrap-in-uag-what-s-new.aspx"&gt;http://blogs.technet.com/b/edgeaccessblog/archive/2009/11/17/appwrap-in-uag-what-s-new.aspx&lt;/a&gt;). To download the IAG Advanced User Guide, click &lt;a href="http://download.microsoft.com/download/2/F/9/2F9D9113-B84B-4838-98A0-A3AEFA6608E2/IAG_AdvancedUserGuide.pdf"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;a href="http://blogs.technet.com/b/ben/"&gt;&lt;strong&gt;Ben Ari&lt;/strong&gt;&lt;/a&gt; and &lt;strong&gt;Ran Dolev&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3428874" width="1" height="1"&gt;</description></item><item><title>Firewall settings could not be configured?</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/05/04/firewall-settings-could-not-be-configured.aspx</link><pubDate>Wed, 04 May 2011 22:50:21 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3426474</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3426474</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/05/04/firewall-settings-could-not-be-configured.aspx#comments</comments><description>&lt;p&gt;When you try to activate UAG, you might find yourself staring at an error saying “firewall settings could not be configured, unknown error 0xc00403c4”&lt;/p&gt;  &lt;p&gt;This is not a very common situation, but it may happen if you have made changes or additions to the firewall rules on TMG that’s on the UAG server. As you may or may not know, making changes to the TMG configuration on a UAG server is not only unsupported (except some specific scenarios), but also dangerous. Normally, UAG is in charge of being the configuration king, and when you perform a configuration activation, it pushes certain settings into the TMG configuration. Interfering with this process is hazardous, and can lead to disappointments such as the one above, or even worse. How? Well, the TMG is there to serve as a security layer for your protection, and making changes or additions to the rules may cause a conflict that could lead to inoperability of the server, or a security exposure. The above example is exactly this kind of thing. When you make such manual changes to the TMG configuration, it may prevent it from accepting the settings that UAG tries to create, and can leave you with a server that is completely unresponsive to client requests. &lt;/p&gt;  &lt;p&gt;If you do run into the error above, start by making sure no one made any changes to the configuration, and if some were made, reverse them. In some circumstances, such a chance may work for a while, and show its ugly head much later, when you create a new trunk or make some other significant configuration change. &lt;/p&gt;  &lt;p&gt;If you are wondering what specific scenarios I was referring to earlier, these are documented here: &lt;a href="http://technet.microsoft.com/en-us/library/ee522953.aspx"&gt;http://technet.microsoft.com/en-us/library/ee522953.aspx&lt;/a&gt;. Additionally, if working on a support case, a Microsoft representative may guide you to make manual changes, which is perfectly fine, of course. &lt;/p&gt;  &lt;p&gt;One scenario for which we have seen users make changes to their Config is when trying to provide access to or from external servers. For example, to allow themselves to RDP into the UAG server from a corporate machine, such a change would be required. However, there’s a proper and supported way to do this:&lt;/p&gt;  &lt;p&gt;1. Open the TMG console, and go to &lt;b&gt;Firewall Policy&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2. On the &lt;b&gt;Toolbox&lt;/b&gt; tab, click &lt;b&gt;Network Objects&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;3. Expand &lt;b&gt;Computer Sets&lt;/b&gt;, and then double-click &lt;b&gt;Remote Management Computers&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0842.clip_5F00_image002_5F00_4A0C668F.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7457.clip_5F00_image002_5F00_thumb_5F00_706E49DA.jpg" width="727" height="471" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. On the Remote Management Computers Properties dialog box, click &lt;b&gt;Add&lt;/b&gt;, and then select &lt;b&gt;Computer&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;5. On the New Computer Rule Element dialog box, type the name of the computer, in Computer IP Address, enter the IP address of the remote computer, and then in the Description box, provide an optional description. On the New Computer Rule Element dialog box, click OK:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/3731.clip_5F00_image004_5F00_4FE70A28.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/0820.clip_5F00_image004_5F00_thumb_5F00_41A89138.jpg" width="587" height="388" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. On the Remote Management Computers Properties dialog box, click OK. &lt;/p&gt;  &lt;p&gt;7. On the Apply Changes bar, click the Apply button, and then on the Saving Configuration Changes dialog box, click OK.&lt;/p&gt;  &lt;p&gt;Another scenario which we have seen is when the UAG computer needs to run some software that needs to connect to some backend server. For example, an Anti Virus or backup agent. This is not as simple as it looks, as the UAG supportability guidelines also dictate that no additional software should be installed on the UAG server, to prevent potential conflict with the UAG or TMG software. This mostly applies to service software, while Microsoft is more forgiving towards protection software like an Anti Virus. There are several other considerations for using AntiVirus software on a UAG server, and these are discussed here: &lt;a href="http://technet.microsoft.com/en-us/library/cc707727.aspx"&gt;http://technet.microsoft.com/en-us/library/cc707727.aspx&lt;/a&gt;. However, the point here is that if a certain piece of software requires access to some other computer, the right way to do it is not by manually creating a TMG rule. Instead, create an app!&lt;/p&gt;  &lt;p&gt;The idea here is to configure a “ghost” application that will make UAG configure TMG to allow the traffic we need. The application will not be used by anyone, and we can even make it hidden. All it will do is specify servers and ports that UAG needs to push into TMG. Here’s how:&lt;/p&gt;  &lt;p&gt;1. On the UAG portal, create a new application. If you have more than one trunk, it can be done on any of them – it does not matter.&lt;/p&gt;  &lt;p&gt;2. Select “Client/Server and legacy” group, select “Generic Client Application”. You may also select “Generic Client Application(Multiple Servers)” if you need to add multiple servers, or multiple ports. &lt;/p&gt;  &lt;p&gt;3. Give the application a descriptive name to remind yourself what it is for&lt;/p&gt;  &lt;p&gt;4. Choose any access policy – it doesn’t matter, as it won’t be used by users anyway.&lt;/p&gt;  &lt;p&gt;5. In step 4 of the wizard, specify the IP or name of the servers that need to be accessible:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/6708.clip_5F00_image006_5F00_485B9ABB.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7382.clip_5F00_image006_5F00_thumb_5F00_21215186.jpg" width="374" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. On step 5 of the wizard, uncheck the option to show the app on the portal:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7875.clip_5F00_image008_5F00_12E2D896.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/7701.clip_5F00_image008_5F00_thumb_5F00_1995E219.jpg" width="371" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. Finish the wizard, and activate the configuration. &lt;/p&gt;  &lt;p&gt;As part of the activation process, UAG will create an access rule to allow access to the server(s) and port(s) specified in step 4, and your problem should be over!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Blog post by &lt;a href="http://blogs.technet.com/b/ben/"&gt;Ben Ari&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3426474" width="1" height="1"&gt;</description></item><item><title>Creating custom icons for applications</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/04/06/creating-custom-icons-for-applications.aspx</link><pubDate>Wed, 06 Apr 2011 21:21:37 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3419255</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3419255</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/04/06/creating-custom-icons-for-applications.aspx#comments</comments><description>&lt;p&gt;Several customers have asked for help in creating their own custom application icons. This is a rather simple process that only requires a simple paint program and some understanding of the CustomUpdate process and &lt;b&gt;appicon&lt;/b&gt; structure.&lt;/p&gt;  &lt;p&gt;UAG requires 4 icons for each application:&lt;/p&gt;  &lt;p&gt;1. A regular (large) icon&lt;/p&gt;  &lt;p&gt;2. A nav-bar (small) icon&lt;/p&gt;  &lt;p&gt;3. A “disabled” regular icon&lt;/p&gt;  &lt;p&gt;4. A “disabled” small icon&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8510.clip_5F00_image002_5F00_4A606772.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2727.clip_5F00_image002_5F00_thumb_5F00_10DD577B.jpg" width="512" height="256" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;UAG comes pre-configured with many icons, covering all the built-in templates, but you can create your own sets. This can be done with something like &lt;a href="http://www.getpaint.net/"&gt;Paint.NET&lt;/a&gt;, or a more advanced application, if you have reasonable control over one. The icons you need to create should be 88x50 pixels for the large icons, and 15x15 pixels for the small icons. The UAG default icons for “disabled” apps (apps for which the user has no access) are “grayed out”, but you are free to create any shape or form you want. For example, you might prefer an icon with a large X on it, or some custom text – anything goes, really. &lt;/p&gt;  &lt;p&gt;To configure an application to use a custom icon, you need to adjust the “Icon URL” setting in the application’s Portal Link tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2577.clip_5F00_image004_5F00_029EDE8B.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/3618.clip_5F00_image004_5F00_thumb_5F00_1E436A81.jpg" width="385" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On the Icon URL setting, you specify the name of the primary (Active application with a large icon) file, including the relative path that starts with the &lt;b&gt;image&lt;/b&gt; folder, and the &lt;b&gt;CustomUpdate&lt;/b&gt; folder name (see example in the screenshot above). UAG will look for the other 3 icons based on the following naming convention:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1. &lt;/b&gt;A regular (large) icon - &lt;b&gt;&amp;lt;name&amp;gt;.gif&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2. A nav-bar (small) icon - &lt;b&gt;&amp;lt;name&amp;gt;_dis.gif&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;3. A “disabled” regular icon - &lt;b&gt;&amp;lt;name&amp;gt;_icon.gif&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;4. A “disabled” small icon - &lt;b&gt;&amp;lt;name&amp;gt;_icon_dis.gif&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The actual image-size is not critical, because UAG will display the icon even if it’s not the right size. It will, however, show it at the standard size and shape, so if you create different files, they may be appear distorted&lt;/p&gt;  &lt;p&gt;As with all UAG customizations, the custom files should be located in the CustomUpdate folder. The full location is:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;C:\program files\Microsoft Forefront Unified Access Gateway\Von\PortalHomePage\Images\AppIcons\CustomUpdate&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Once you put your files in the CustomUpdate folder, adjust the Icon URL setting and activate the configuration, the application should show the image right away. &lt;/p&gt;  &lt;p&gt;If this is not working properly, you need to check the URL of the icon that UAG is trying to load. This is not that simple, as the right-click functionality on the portal is disabled normally, so you can’t just right-click on the dead icon and see its properties. Instead, you can use a tool such as HTTPWatch or Fiddler to view the page source and see:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/6378.clip_5F00_image006_5F00_491BCE93.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2642.clip_5F00_image006_5F00_thumb_5F00_16B7FB14.jpg" width="605" height="229" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;ContentFrame.aspx&lt;/b&gt; page is where the large icons are at, and the &lt;b&gt;MainFrame.aspx&lt;/b&gt; page is where the small icons are at. You may discover that you have made a typo in the file name or path. Another possibility is that the image itself is not fully compatible to the file-format standard, and IE just can’t show it. This is also visible in the HTTPWatch trace – the “result” column will show a 200 for an image that was downloaded successfully (meaning IE got it…but can’t show it) and a 404 for an image that was not found on the server for some reason.&lt;/p&gt;  &lt;p&gt;The last tip for creating icons is that you can use PNG or GIF files for this task, and these also support transparency. The small icons are displayed against a gray background, while the large ones are on a white page. You might want to consider creating a transparent background for your icon images, to make the appearance look best. Not all paint programs actually support this, but it’s worth looking into!&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;a href="http://blogs.technet.com/b/ben/"&gt;Ben Ari&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3419255" width="1" height="1"&gt;</description></item><item><title>No place like HOD</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/03/15/no-place-like-hod.aspx</link><pubDate>Tue, 15 Mar 2011 17:57:13 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3413038</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3413038</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/03/15/no-place-like-hod.aspx#comments</comments><description>&lt;p&gt;IBM’s Host On Demand (HOD) application is a fantastic solution, providing access to IBM mainframe servers through a browser. It’s basically a Terminal emulation client written in java, allowing it to be embedded into the browser, and allowing it to be published on a company’s external website via technologies like UAG’s SSL-VPN publishing. &lt;/p&gt;  &lt;p&gt;Back in the days of IAG, HOD was quite popular, and so IAG had a special template for it. When UAG was being developed, the need for HOD was on the decline, and so the template for it was removed. This doesn’t mean, though, that it cannot be used! On the contrary…with the proper configuration, it can be used with ease!&lt;/p&gt;  &lt;p&gt;The trick is to realize that HOD is what we, in the UAG world, like to call ‘a browser embedded application’. A B.E.A. is a fancy term for an application that is not web-based (i.e., not communicating with its server using the HTTP or HTTPS protocols), but it’s launched from within an HTTP or HTTPS session. Many JAVA, Flash, Silver light and Active-X based applications are like that, and so is HOD. There are even some executable apps that are like that too!&lt;/p&gt;  &lt;p&gt;The way a B.E.A. application works is by being offered to the user via a web page. The user visits the page, which has an embedded “call” for the application. When the page loads in the browser, it instructs the computer to launch the application using its framework, and then the application needs to communicate with its server using some non-HTTP or HTTPS communication channel. That framework would typically be installed on the client’s computer, somehow. Active-X, for example, is already baked into every version of windows out there. Flash, Silver light and Java would typically require the user to install those frameworks (The Flash player from &lt;a href="http://get.adobe.com/flashplayer/"&gt;Adobe’s website&lt;/a&gt;, Java from &lt;a href="http://www.java.com/en/"&gt;Oracle’s site&lt;/a&gt;, and Silver light from &lt;a href="http://www.microsoft.com/getsilverlight/Get-Started/Install/Default.aspx"&gt;Microsoft’s&lt;/a&gt;). &lt;/p&gt;  &lt;p&gt;Just the fact that there’s a flash, Silver light, active-X or Java application on the page doesn’t mean it’s a B.E.A. application. Such an application may be able to communicate with its server using HTTP or HTTPS, and if so, may work using any regular web-based template in UAG. However, some apps use other protocols. For example, another B.E.A. is Citrix, which communicates with its backend server using their own protocol on ports 1494, 2598 and 3389. &lt;/p&gt;  &lt;p&gt;When a B.E.A. application is published on UAG, it is configured to launch an SSL-VPN tunnel, and then launch the client from the browser. The client can then use the SSL-VPN tunnel to communicate with its backend server. To publish a B.E.A. application on UAG, all you have to do is figure out the names of the servers it is supposed to communicate with, and the ports it needs to use. Then, run the UAG application wizard, and from the application template menu, select “Generic Browser-Embedded Application (Multiple Servers)”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/0247.clip_5F00_image002_5F00_5544C9CA.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/7026.clip_5F00_image002_5F00_thumb_5F00_66B52AA2.jpg" width="432" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On step 5 of the wizard, you need to configure the properties of the WEB server. This is the server which hosts the web page with the links to the application. Often, there would be only one web server that hosts both the web page, and the actual application, but it’s not always the case. Keep in mind, though, that the HTTP PORTS are only for the web page, so this would be usually either HTTP or HTTPS. This is not where you would specify the higher ports!&lt;/p&gt;  &lt;p&gt;Step 7 of the wizard is where the magic happens. The servers and ports listed there define, for the SSL-VPN tunnel, to which servers on the inside traffic needs to be forwarded. Here you might specify one or more servers, and one or more ports (separated by commas). As the administrator, you may not always be aware of ALL the servers that are involved, so make sure you do your research with the application’s owner. It’s sensitive – missing a single server or port could ruin the party. Keep in mind, though, that the HOD Config may differ from server to server, and that you can always go back and add something, if you forgot or got it wrong:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4477.clip_5F00_image004_5F00_546C63E0.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5556.clip_5F00_image004_5F00_thumb_5F00_6648F7AD.jpg" width="356" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once done and activated, launching the new application is supposed to launch the UAG SSL-VPN tunnel on the client, and display the notice “Ready to launch application”. At this point, you are supposed to see the SSL-VPN blue-yellow arrows on your client’s systray, and the HOD application should launch inside the Java window on the browser. If the SSL-VPN tunnel is not opening at all, then it means there’s something wrong with the client components on this specific client, so the 1&lt;sup&gt;st&lt;/sup&gt; step would be to check another client, preferably a “clean” one (without older versions of the components, or a computer that hasn’t been tortured too-much). If the tunnel is launching, but the HOD app doesn��t launch, troubleshoot your Java installation. There are multiple versions of the Java client, and some are known to be more challenging to get working than others. If the HOD app is launching, but unable to connect to its server, then it means the tunnel is not permitting access to the appropriate server or port. This may be tricky to troubleshoot, but a 1&lt;sup&gt;st&lt;/sup&gt; step would be to use something like Network Monitor on a regular, internal client, and see if the application may be using other ports, or calling other server names.&lt;/p&gt;  &lt;p&gt;Post written by &lt;strong&gt;&lt;a href="http://blogs.technet.com/b/ben/"&gt;Ben Ari&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cheers to &lt;strong&gt;Thomas O.&lt;/strong&gt; for your help with this!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3413038" width="1" height="1"&gt;</description></item><item><title>Microsoft Forefront UAG 2010 Administrator's Handbook  is now available in print</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/02/28/microsoft-forefront-uag-2010-administrator-s-handbook-is-now-available-in-print.aspx</link><pubDate>Mon, 28 Feb 2011 23:07:37 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3390875</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3390875</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/02/28/microsoft-forefront-uag-2010-administrator-s-handbook-is-now-available-in-print.aspx#comments</comments><description>&lt;p&gt;We are glad to inform you that the Microsoft Forefront UAG 2010 Administrator's Handbook, published by PACKT publishing is now available in print. The book was written by Ran Dolev and Erez Ben-Ari (also known as “Ben Ben”) from the UAG product support team. It covers UAG publishing scenarios, DirectAccess and troubleshooting, which makes it the most complete self-study and reference resource for UAG available on the market. &lt;/p&gt;  &lt;p&gt;&lt;img title="Microsoft Forefront UAG 2010 Administrator&amp;#39;s Handbook" alt="Microsoft Forefront UAG 2010 Administrator&amp;#39;s Handbook" src="https://www.packtpub.com/sites/default/files/imagecache/productview/1629EN_MockupCover .jpg" width="166" height="202" /&gt;&lt;/p&gt;  &lt;p&gt;The book is available for order from &lt;a href="http://amazon.com/o/asin/1849681627"&gt;Amazon&lt;/a&gt;, or from the &lt;a href="https://www.packtpub.com/microsoft-forefront-uag-2010-administrators-handbook/book"&gt;publisher directly&lt;/a&gt;, and is available as a hard-copy, or e-book.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3390875" width="1" height="1"&gt;</description></item><item><title>Forwarding on the 6to4 network interface cannot be enabled</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/01/28/forwarding-on-the-6to4-network-interface-cannot-be-enabled.aspx</link><pubDate>Fri, 28 Jan 2011 21:07:54 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3383393</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3383393</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/01/28/forwarding-on-the-6to4-network-interface-cannot-be-enabled.aspx#comments</comments><description>&lt;p&gt;An error you might run into when activating a DirectAccess configuration is the dreadful “Forwarding on the 6to4 network interface cannot be enabled”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4162.clip_5F00_image002_5F00_5E201E4B.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/6116.clip_5F00_image002_5F00_thumb_5F00_283B2931.gif" width="447" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This often happens after you rebuild a server, and try to restore a configuration from backup, and is typically caused because of a duplicate 6to4 interface. &lt;/p&gt;  &lt;p&gt;The first step of resolving this is to enable the interface manually, which is done this way:&lt;/p&gt;  &lt;p&gt;1. Find the name of your 6to4 adapter by running the command &lt;b&gt;netsh int ipv6 show int&lt;/b&gt;. This would often be “6to4 adapter”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8863.clip_5F00_image004_5F00_07B3E97F.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2821.clip_5F00_image004_5F00_thumb_5F00_74FEEFC7.jpg" width="499" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Enable forwarding by running the command &lt;b&gt;netsh int ipv6 set int &amp;lt;NAME&amp;gt; forwarding=enabled&lt;/b&gt; where &amp;lt;NAME&amp;gt; is what you found in step 1&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8765.clip_5F00_image006_5F00_3F862DA2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/6710.clip_5F00_image006_5F00_thumb_5F00_6D074D65.jpg" width="488" height="91" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, try activating DA again from the UAG console. You would probably be disappointed to see it fail again. If so, the reason is probably because the computer has duplicate 6to4 adapters, confusing the server. If so, you can easily fix this by removing the interfaces from the Device Manager:&lt;/p&gt;  &lt;p&gt;1. Open Device Manager&lt;/p&gt;  &lt;p&gt;2. Click View and select “View Hidden Devices”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4062.clip_5F00_image008_5F00_0596EAB6.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8863.clip_5F00_image008_5F00_thumb_5F00_72E1F0FE.jpg" width="332" height="377" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Notice the two 6to4 adapters? There’s your problem. Remove both of them by right-clicking and selecting “uninstall”. &lt;/p&gt;  &lt;p&gt;4. Close the device manager, and reboot the UAG server.&lt;/p&gt;  &lt;p&gt;5. After a reboot, the 6to4 adapter will be re-added, but only once, so you should be good to go.&lt;/p&gt;  &lt;p&gt;6. Activate the UAG configuration again, and this time, it should be fine!&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;a href="http://blogs.technet.com/b/ben/"&gt;Ben Ari&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3383393" width="1" height="1"&gt;</description></item><item><title>UAG and SharePoint mobile access</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/01/18/uag-and-sharepoint-mobile-access.aspx</link><pubDate>Tue, 18 Jan 2011 21:59:56 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3381079</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3381079</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/01/18/uag-and-sharepoint-mobile-access.aspx#comments</comments><description>&lt;p&gt;A nice feature of SharePoint is &lt;strong&gt;SharePoint Mobile Access&lt;/strong&gt;, which allows you to access SharePoint sites on a mobile phone, without having to cope with the busy SharePoint web interface on the phone’s small screen. This is a built-in feature of UAG, as well as Windows Mobile. Configuring this on UAG is not that difficult, but many users are not familiar with how to actually use it on the phone itself.&lt;/p&gt;  &lt;p&gt;Let’s start with the UAG side. It’s pretty straightforward, and you might have guessed it yourself, but just to be sure we are all on the same page, this is how it’s done. To configure the UAG portal to support the mobile phone access, you need to enable the mobile browser on your published SharePoint application (on the UAG). To do so, open the application’s properties, and go to the Portal Link page. Enable the settings like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/8080.image_5F00_774FBBE0.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-26-metablogapi/5353.image_5F00_thumb_5F00_649AC229.png" width="259" height="389" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Simple, right? Now here comes the hard part…viewing this on the phone. It’s not REALLY hard, but since that part will be performed by your users, it may be a challenge to help all of them configure this correctly. The procedure is as follows:&lt;/p&gt;  &lt;p&gt;1. Open the phones start menu, and go to the Office application:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2437.clip_5F00_image004_5F00_241174D7.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/0880.clip_5F00_image004_5F00_thumb_5F00_16AB61D1.jpg" width="128" height="244" /&gt;&lt;/a&gt; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2844.clip_5F00_image006_5F00_651FF43B.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5164.clip_5F00_image006_5F00_thumb_5F00_57B9E135.jpg" width="130" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. On the office application, go to the SharePoint page, and tap on All:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4812.clip_5F00_image008_5F00_3F2A43E5.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/3010.clip_5F00_image008_5F00_thumb_5F00_681558EE.jpg" width="131" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. On the &lt;strong&gt;All &lt;/strong&gt;page, expand the bottom tab with the 3-dot button, and tap on &lt;b&gt;Settings&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8713.clip_5F00_image010_5F00_2F6AAEE1.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5582.clip_5F00_image010_5F00_thumb_5F00_6FA0C85B.jpg" width="123" height="96" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. On the &lt;b&gt;settings&lt;/b&gt; page, tap on &lt;strong&gt;UAG server&lt;/strong&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5504.clip_5F00_image012_5F00_01E98F1E.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8132.clip_5F00_image012_5F00_thumb_5F00_3410DF68.jpg" width="195" height="232" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. On the &lt;strong&gt;UAG server&lt;/strong&gt; page, fill in the UAG server details and tap Save. The “&lt;strong&gt;UAG Server Address&lt;/strong&gt;” is the name of the UAG Trunk on which you publish the SharePoint server, including the protocol prefix (not the public hostname of the SharePoint application itself). For example: “&lt;a href="https://uag.contoso.com&amp;rdquo;"&gt;&lt;strong&gt;https://uag.contoso.com&lt;/strong&gt;”&lt;/a&gt;. Make sure you feed in your username in the &lt;strong&gt;domain\username&lt;/strong&gt; format:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/1781.clip_5F00_image014_5F00_146205A0.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/6165.clip_5F00_image014_5F00_thumb_5F00_46C5D91F.jpg" width="128" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After savings the settings, go back, and tap on “Open URL”, and type in the &lt;strong&gt;internal URL&lt;/strong&gt; of your SharePoint server (the same one you would type if you were working on your computer in the office). Note that if the SharePoint is set to accept only HTTPS connection, you need to type that as part of the URL as well. The phone will open the URL through the UAG server you have configured, and you will be presented with your documents, which you can now open, edit and save!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/1385.clip_5F00_image016_5F00_2716FF57.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4431.clip_5F00_image016_5F00_thumb_5F00_0E876207.jpg" width="127" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Some more info about mobile phones and SharePoint&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One thing several users have been asking themselves it is possible to access a SharePoint server without a UAG (ie: a SharePoint that’s directly on the internet, or published using a simple firewall). Unfortunately, the answer is no. The WP7 application is designed to be able to authenticate to a SharePoint only through a UAG server, and if you attempt to access a SharePoint directly, you will receive a message titled “Can’t open” saying “SharePoint doesn’t support this authentication scheme”. The message suggests opening the site in the browser, which is a great idea. In fact, SharePoint even has a nice mobile feature that you may not be aware of. If you append the parameter ?mobile=1 to a SharePoint URL, it will be displayed in a compact form that’s bandwidth-conservative and screen-size optimized for a mobile phone:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-73-55-metablogapi/1031.image_5F00_2.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-73-55-metablogapi/5810.image_5F00_thumb.png" width="512" height="677" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;a href="http://blogs.technet.com/b/ben/"&gt;Ben Ari&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3381079" width="1" height="1"&gt;</description></item><item><title>Hiding the UAG portal bar</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2011/01/04/hiding-the-uag-portal-bar.aspx</link><pubDate>Tue, 04 Jan 2011 20:43:15 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3378395</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3378395</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2011/01/04/hiding-the-uag-portal-bar.aspx#comments</comments><description>&lt;p&gt;The UAG portal is designed to let you publish multiple applications using a single public hostname, but many customers need UAG to publish only a single application, or simply don’t want to have the portal visible to their users, and have the users redirected to a specific application immediately after logon. The UAG User interface offers this option in a way that’s easy to see – you select an Initial Internal Application that is other than “Portal”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5822.clip_5F00_image002_5F00_6656997F.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8228.clip_5F00_image002_5F00_thumb_5F00_25B44D10.jpg" width="244" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Often times, the purpose of using this option is to present the user with an experience that hides UAG as much as possible, and for that, many users will also check-off the option “Display home page within portal frame”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8032.clip_5F00_image004_5F00_5A54A94B.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5315.clip_5F00_image004_5F00_thumb_5F00_4C16305B.jpg" width="244" height="67" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this option set, the UAG interface is pretty-much tucked away and concealed, but this has a side effect that needs to be kept in mind. The UAG toolbar isn’t just for looks – it also runs some important scripts that affect the security of the site. For example, it is in charge of showing a notification that the session is about to time-out for inactivity. With it being hidden, the user may not become aware that his session is about to expire, and will only find out when he clicks a link and gets redirected to the login page. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/3755.clip_5F00_image006_5F00_19B25CDC.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/2843.clip_5F00_image006_5F00_thumb_5F00_004A59A2.jpg" width="244" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In some circumstances, the result could be even more awkward. For example, if the published app uses frames, then action done in one frame may not affect the others, and so after a session expiry, one frame may remain with “old” content, while the user clicks a link in another frame and gets the UAG login page.&lt;/p&gt;  &lt;p&gt;Before I go on and tell you how to get around that, it’s important to realize that hiding the portal frame is not the only way to get rid of it. UAG also supports “application-specific hostname” applications, sometimes referred to as “AAM-Like” applications. The way this works is by having you, the administrator; select a specific public name for one of the applications, and mapping it in DNS to resolve to the UAG Trunk’s public IP. For example, the portal may be published on “&lt;b&gt;https://uag.contoso.com&lt;/b&gt;”, with the application published as “&lt;b&gt;https://mail.contoso.com&lt;/b&gt;”. You need to configure your DNS to resolve these two names to the same IP, and if your UAG trunk is an HTTPS Trunk, then it’s certificate has to be a wildcard certificate (*.contoso.com) or a SAN certificate. &lt;/p&gt;  &lt;p&gt;The application itself needs to be configured accordingly. If this is a generic web application, you need to use the “Other Web App(Application-specific hostname)” template, which has a special setting for you to let UAG know which public hostname this application will use:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5811.clip_5F00_image008_5F00_38F503AF.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/0131.clip_5F00_image008_5F00_thumb_5F00_186DC3FD.jpg" width="244" height="183" /&gt;&lt;/a&gt; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/7633.clip_5F00_image010_5F00_30FD614D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4745.clip_5F00_image010_5F00_thumb_5F00_30912E58.jpg" width="244" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;When this is done, this is how it works:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;As the user types &lt;a href="https://mail.contoso.com"&gt;https://mail.contoso.com&lt;/a&gt; in his browser, it resolves to the UAG’s external IP, and the request is received by the UAG. However, the request also includes the &lt;b&gt;host-header&lt;/b&gt;, which tells UAG that the request was for &lt;b&gt;that&lt;/b&gt; specific URL, and not to the portal hostname. &lt;/p&gt;  &lt;p&gt;UAG uses the host-header to search it’s list of configured applications to find which one has that configuration, and will then retrieve data from that server (only after completing the login process, though, of course). &lt;/p&gt;  &lt;p&gt;For some of the application template, this mechanism is mandatory. For example, CWA publishing and SharePoint publishing require that to be configured this way. You still can access those applications via the UAG portal, but if you look closely, these links actually point to the public hostname you defined. This is really nice, because you have the two options for the price of one – you can let your users access the application via the portal (by clicking on an app link), or directly, by typing-in the public URL. Naturally, they can also go to it from their Favorites folder or from a link that has been emailed to them etc)&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Back to hiding the portal frame&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;As I said, just setting the portal frame to be off has some downsides, but there is another way to get this done. UAG uses CSS to control the way the portal frame looks, and it’s fairly easy to customize it to hide the frame without actually disabling it. This is discussed in the UAG &lt;a href="http://technet.microsoft.com/en-us/library/ee861168.aspx"&gt;Customization guide&lt;/a&gt;, alongside other ways to affect the appearance of the portal. The file in question is called &lt;b&gt;Office.css&lt;/b&gt;, and it’s located at &lt;b&gt;&amp;lt;UAG Folder&amp;gt;\Von\PortalHomePage\App_Themes\Office&lt;/b&gt;. As is always the case with UAG, you should not edit the original file. To make changes, copy the file to the &lt;b&gt;&amp;lt;UAG Folder&amp;gt;\Von\PortalHomePage\App_Themes\&lt;u&gt;CustomUpdate&lt;/u&gt;\Office&lt;/b&gt; folder, and then edit the file in &lt;b&gt;CustomUpdate&lt;/b&gt;. Once you make a change to the file and save it, the change is applied immediately, so there’s no need to re-activate the configuration on UAG or to log-off/log-on again on the client. &lt;/p&gt;  &lt;p&gt;You can make any changes to the CSS style sheet that suits your taste. For example, the style “&lt;b&gt;display:none;&lt;/b&gt;” makes an element hidden from view, and changing the position and size styles (&lt;b&gt;top, bottom, left, width, height&lt;/b&gt; etc) affects their position on the page. Note that setting the &lt;b&gt;div#topStrip&lt;/b&gt; and &lt;b&gt;div#toolbar&lt;/b&gt; (the frame is actually comprised of two separate ribbons) to hidden will just turn the top area of the screen to a clean white, but the app will still show-up in the area below it. To make the app stick to the top, you also need to change the location of the &lt;b&gt;div#content&lt;/b&gt; element from &lt;b&gt;Top:85px;&lt;/b&gt; &lt;b&gt;to Top:0px;&lt;/b&gt;. You could move stuff around and even integrate your own unique elements to get your own company’s look-and-feel.&lt;/p&gt;  &lt;p&gt;To make the entire frame invisible, you need to hide the following elements, and then move the content piece up, as noted earlier:&lt;/p&gt;  &lt;p&gt;· div#topStrip&lt;/p&gt;  &lt;p&gt;· div#toolbar &lt;/p&gt;  &lt;p&gt;· div#footer&lt;/p&gt;  &lt;p&gt;· .contentLeftSideBarCell&lt;/p&gt;  &lt;p&gt;· .topLeftMarginGradient&lt;/p&gt;  &lt;p&gt;· .topRightMarginGradient&lt;/p&gt;  &lt;p&gt;· .bottomLeftMarginGradient&lt;/p&gt;  &lt;p&gt;· .bottomRightMarginGradient&lt;/p&gt;  &lt;p&gt;With these changes, the only thing you will see after logging in is the application list, or the application you have set as the initial app:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/3833.clip_5F00_image012_5F00_5E124E1B.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/1373.clip_5F00_image012_5F00_thumb_5F00_16BCF829.jpg" width="260" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blog post written by &lt;b&gt;Ben Ari&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3378395" width="1" height="1"&gt;</description></item><item><title>Publishing Office Communication Server and Communicator Web Access with UAG</title><link>http://blogs.technet.com/b/edgeaccessblog/archive/2010/12/29/publishing-office-communication-server-and-communicator-web-access-with-uag.aspx</link><pubDate>Wed, 29 Dec 2010 23:59:48 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3377756</guid><dc:creator>MeirM [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/edgeaccessblog/rsscomments.aspx?WeblogPostID=3377756</wfw:commentRss><comments>http://blogs.technet.com/b/edgeaccessblog/archive/2010/12/29/publishing-office-communication-server-and-communicator-web-access-with-uag.aspx#comments</comments><description>&lt;p&gt;Publishing Office Communication Server (OCS) and Communicator Web Access (CWA) with UAG has been a source of confusion for some UAG customers, mostly because these products offer a wide range of functionality. Some of this is pretty simple to configure, and some takes more planning. &lt;/p&gt;  &lt;p&gt;When planning OCS publishing with UAG, one must take into consideration the fact that OCS has many features, functions and roles. Not all of them were planned with publishing in-mind, and UAG was not designed to publish all the features either. Essentially, UAG includes a special template for Communicator Web Access (CWA) 2007, and for other features, UAG does not include built-in functionality, and something “else” needs to be used. &lt;/p&gt;  &lt;p&gt;Virtually any firewall product in the market can be used to publish internal servers to the outside world. Some companies may refer to this as “port forwarding” or “Reverse-proxying”, or even simply as “routing”. At Microsoft, we divide this into sort of functionality into two categories. The 1&lt;sup&gt;st&lt;/sup&gt; is “Web publishing”, in which an edge device gives computers on the internet access to &lt;u&gt;web servers&lt;/u&gt; inside the organizational network. The 2&lt;sup&gt;nd&lt;/sup&gt; is “Server publishing”, in which the access is to services that are not necessarily web services (for example, RDP access). The difference is that web services are a narrow type of service, which is very clearly defined. This clear definition allows us to offer additional features that go beyond just moving the packets from one “side” to the other. For example, with Web Publishing, we can do more advanced content inspection, and can block certain file-types from being transferred. &lt;/p&gt;  &lt;p&gt;If you purchased UAG to publish certain applications, good chance you’d prefer not to purchase any additional devices to publish the non-web OCS features, and the good news is that UAG does, in fact, include something else…TMG! If you read your documentation carefully or ever spoken to Microsoft Customer Support, you are probably aware that trying to use the UAG server for “other” things is not supported. You’re not supposed to tack-on an additional website on the IIS that’s on UAG to publish your cafeteria’s lunch menu, or use the SQL that’s there to store your inventory database. We do, however, allow for a certain, limited list of things to be done with TMG, as stated here in the support boundaries for uag (&lt;a href="http://technet.microsoft.com/en-us/library/ee522953.aspx"&gt;http://technet.microsoft.com/en-us/library/ee522953.aspx&lt;/a&gt;). This list includes publishing OCS features other than CWA. &lt;/p&gt;  &lt;p&gt;When you publish something with TMG, you select whether you want to use Web Publishing or Server publishing by the type of task you select in the task list. There are actually some more variations for types of publishing, but for our purposes, the “Publish Non-Web Server” is the relevant one for OCS’s features. Using this wizard will allow you to specify which ports you need to publish, which depends on the type of service you need to publish. For example, you may need to publish port 5063 for incoming SIP listening requests or port 8057 for direct PSOM connections from Live Meeting clients.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/6724.clip_5F00_image0024_5F00_06185E14.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/7713.clip_5F00_image0024_5F00_thumb_5F00_29D185AE.jpg" width="403" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will not cover this in high detail here, as this blog is about UAG, but you can read more about server publishing in one of many books that are available about TMG, such as &lt;a href="http://www.amazon.com/Microsoft-Forefront-Management-Administrators-Administrators/dp/0735626383"&gt;this one&lt;/a&gt;. For more information about ports used by OCS, refer to &lt;a href="http://technet.microsoft.com/en-us/library/bb870402(office.12).aspx"&gt;this article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To publish CWA itself using UAG, what you need to know is that CWA needs to be published as a non-HAT application (a.k.a AAM-Like application). If you are not familiar with HAT and what it does, you might want to take a peek at &lt;a href="http://blogs.technet.com/b/ben/archive/2010/12/29/sharepoint-publishing-concepts-and-considerations.aspx"&gt;this blog post&lt;/a&gt;. Like SharePoint, CWA cannot be published with the HAT mechanism, and requires its own public hostname, which brings the following considerations into play:&lt;/p&gt;  &lt;p&gt;1. The public hostname needs to be based on the same public domain you are using for your UAG trunk. For example, if your trunk is published as &lt;a href="https://uag.contoso.com"&gt;https://uag.contoso.com&lt;/a&gt;, then you need to use something like &lt;a href="https://*.contoso.com"&gt;https://*.contoso.com&lt;/a&gt; for CWA.&lt;/p&gt;  &lt;p&gt;2. If your UAG trunk is an HTTPS trunk, it has to have a certificate, and that certificate needs to certify both the trunk’s hostname and the CWA’s. Most UAG customers use a wildcard certificate for this, and others prefer a more economic SAN certificate. I should mention that wildcard certs don’t have to cost an arm and a leg. Some websites like &lt;a href="http://www.sslcatacombnetworking.com"&gt;http://www.sslcatacombnetworking.com&lt;/a&gt; and &lt;a href="http://www.rapidssl.com"&gt;http://www.rapidssl.com&lt;/a&gt; offer them for as low as $199 a year. &lt;/p&gt;  &lt;p&gt;3. Both hostnames need to be publicly resolvable to the UAG trunk’s external IP. This is not absolutely mandatory, as you can use static HOSTS file entries on your client computer, but if your intended audience is the general public, setting up the DNS correctly is very important.&lt;/p&gt;  &lt;p&gt;4. The authentication settings on the CWA server need to be adjusted to allow UAG to perform Single-Sign-On. With UAG, you need to publish the “External” CWA site, and use custom authentication, as described in the lab guide &lt;a href="http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=0e21123a-8452-4b25-8cde-57f750cd7803"&gt;http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=0e21123a-8452-4b25-8cde-57f750cd7803&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4263.clip_5F00_image0048_5F00_7E8CEEA6.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004[8]" border="0" alt="clip_image004[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/8461.clip_5F00_image0048_5F00_thumb_5F00_10698274.jpg" width="481" height="380" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, the 1&lt;sup&gt;st&lt;/sup&gt; step is to choose the name that you want to use. The 2&lt;sup&gt;nd&lt;/sup&gt; is changing your certificate, if you are using an HTTPS trunk and your current cert is not a SAN or Wildcard cert. The 3&lt;sup&gt;rd&lt;/sup&gt; step is to add the appropriate host name to your domain’s public DNS server. The 4&lt;sup&gt;th&lt;/sup&gt; step is to adjust the CWA site settings, or re-publish it according to the specifics in the above-mentioned guide. Once this is done, you can start the UAG wizard. &lt;/p&gt;  &lt;p&gt;On the UAG application wizard, the key element is setting the public host name in step 5 of the wizard:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/4274.clip_5F00_image0066_5F00_4509DEAF.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006[6]" border="0" alt="clip_image006[6]" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-26-metablogapi/5353.clip_5F00_image0066_5F00_thumb_5F00_56E6727C.jpg" width="332" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Setting the internal website is also important, because that tells UAG with which internal server it talks to. That server has to be resolvable and reachable on the appropriate ports. This part is no different than publishing other applications, but some users are iffy about it still. In case the publishing does not work, one of the first troubleshooting steps would be to try to access the server directly from the UAG server (open a browser on the UAG server, and browse to &lt;a href="http://CWA01/quicksignin"&gt;http://CWA01/quicksignin&lt;/a&gt;, in our case). If it does not work from UAG, it cannot work &lt;i&gt;through&lt;/i&gt; UAG. &lt;/p&gt;  &lt;p&gt;Blog Post written by &lt;b&gt;Ben Ari&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3377756" width="1" height="1"&gt;</description></item></channel></rss>
