<?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>Ben Ari's UAG and IAG Blog</title><link>http://blogs.technet.com/b/ben/</link><description>Plenty of useful and fun info on UAG, Microsoft&amp;#39;s remote access and reverse-proxy product.</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Activation completed…Erez Ben Ari logging off</title><link>http://blogs.technet.com/b/ben/archive/2013/04/09/activation-completed-erez-ben-ari-logging-off.aspx</link><pubDate>Tue, 09 Apr 2013 17:58:39 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3564406</guid><dc:creator>Ben Ari</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3564406</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/09/activation-completed-erez-ben-ari-logging-off.aspx#comments</comments><description>&lt;p&gt;As you can guess from the title, this is my last post to this blog. A few weeks ago, I was offered a position as a PM (Program Manager) in the IIS team, and tomorrow is my last day with UAG support. I’ve aspired to be a PM for many years, and that dream has finally come true. In my position as a program manager, I will take part in shaping the future of Microsoft’s Web Server platform and help make it better and more successful.&lt;/p&gt;  &lt;p&gt;It’s been a bit over 4.5 years since I joined Microsoft’s customer service and support (1688 days!). It was a rough start…I knew next to nothing about IAG (that was in 2008, before UAG was released), and spending 8+ hours a day on the phone trying to figure out a product with little documentation was very trying. Lucky for me, I had colleagues with super-human skills who helped me along the way. Two years later, UAG came out and by that time, I was already making a name for myself, and being quite successful in my role.&lt;/p&gt;  &lt;p&gt;As time passed, I realized that this is the best job I ever had. I had two amazing manages (&lt;b&gt;Jeff &lt;/b&gt;and &lt;b&gt;Mohit&lt;/b&gt;) who supported my efforts to develop and exercise various peripheral skills such as training, writing and developing code. I was also lucky enough to be to mentor to several other engineers and their success and growth gives me tremendous satisfaction and pride. &lt;/p&gt;  &lt;p&gt;Letting all of this go isn’t easy. UAG is not just a job or a product for me – it has become a part of me, and I part of it. Working with my colleagues and customers was something to look forward to every morning and I’ll miss it a lot. This blog will remain as-is, and I hope the vast amount of knowledge I poured into it will continue to serve both my colleagues and customers for years to come (as you might have noticed, I posted over 20 items in the past week, cleaning up various in-progress items I was stashing). I’m afraid I won’t have the resources to investigate and help with UAG issues in the future, so I’m removing the “contact me” link from the blog and I won’t be responding to comments on it. Those resourceful enough will figure out a way to get in touch, but I hope everyone will respectfully honor the boundaries. &lt;/p&gt;  &lt;p&gt;Farewell, my friends! I wish all of you fun using UAG, and I’m sure our paths will cross in the future again!&lt;/p&gt;  &lt;p&gt;Erez Ben Ari&lt;/p&gt;  &lt;p&gt;April 2013&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&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/5466.Phone_5F00_29DB3E71.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Phone" border="0" alt="Phone" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-73-55-metablogapi/6131.Phone_5F00_thumb_5F00_3BB7D23E.jpg" width="431" height="324" /&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=3564406" width="1" height="1"&gt;</description></item><item><title>UAG SSL Network Tunneling traffic capture</title><link>http://blogs.technet.com/b/ben/archive/2013/04/04/uag-ssl-network-tunneling-traffic-capture.aspx</link><pubDate>Thu, 04 Apr 2013 22:31:50 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3563633</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3563633</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/04/uag-ssl-network-tunneling-traffic-capture.aspx#comments</comments><description>&lt;p&gt;Occasionally, one may need to troubleshoot the UAG Network Tunnling (a.k.a. “the Network Connector”). Normally, traffic capturing is done using tools such as Microsoft’s Network Monitor, or WireShark. If, however, you try to run a capture like that on a UAG client that is connected with the SSL Network Tunneling, you will discover that the client freezes, as the capture driver conflicts with the tunneling components.&lt;/p&gt;  &lt;p&gt;There is, however, another way to capture this sort of traffic, using UAG’s built-in TCPDumper. Here is how to do this:&lt;/p&gt;  &lt;p&gt;1. On the UAG client, log-off any existing UAG session, and close the browser.&lt;/p&gt;  &lt;p&gt;2. Open the registry editor.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. &lt;/b&gt;Navigate to &lt;b&gt;HKLM\SOFTWARE\WhaleCom\Client\NetworkConnector&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;4. Create a new DWORD value and name it “&lt;b&gt;log&lt;/b&gt;”&lt;/p&gt;  &lt;p&gt;5. Set the value to &lt;b&gt;4&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;6. Create a new DWORD value and name it “&lt;b&gt;log\sniff&lt;/b&gt;”&lt;/p&gt;  &lt;p&gt;7. Set the value to &lt;b&gt;1&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-73-55-metablogapi/7382.clip_5F00_image002_5F00_0E36A67B.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-73-55-metablogapi/5238.clip_5F00_image002_5F00_thumb_5F00_6E1B99BD.jpg" width="415" height="124" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8. Exit the registry editor&lt;/p&gt;  &lt;p&gt;9. Launch a browser window, and establish your SSL tunnel, and reproduce the issue you need to investigate.&lt;/p&gt;  &lt;p&gt;10. When done, log-off the UAG portal, and close the browser, to make sure the SSL-VPN component shuts down gracefully.&lt;/p&gt;  &lt;p&gt;11. Re-open the registry editor, and remove the values you have created, or change to “&lt;b&gt;0&lt;/b&gt;” and “&lt;b&gt;-&lt;/b&gt;“respectively.&lt;/p&gt;  &lt;p&gt;12. Go to the UAG client component folder (&lt;b&gt;c:\program files\Microsoft Forefront UAG\Endpoint Components\3.1.0&lt;/b&gt;), where you will find a file called &lt;b&gt;whliocsv.log.lowlevel.dmp&lt;/b&gt;. This file is actually a standard CAP file. You can ask Windows to open it with your network capture software, and it will display like any regular capture!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3563633" width="1" height="1"&gt;</description></item><item><title>SRA and AppWrap FAQ</title><link>http://blogs.technet.com/b/ben/archive/2013/04/04/sra-and-appwrap-faq.aspx</link><pubDate>Thu, 04 Apr 2013 22:29:32 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3563631</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3563631</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/04/sra-and-appwrap-faq.aspx#comments</comments><description>&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;Here are answers to various F.A.Q. I received over the years for SRA and AppWrap:&lt;/p&gt;  &lt;p&gt;1) In the SRA config file, is the application type case sensitive?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: No&lt;/p&gt;  &lt;p&gt;2) When I make changes to the SRA configuration, do I need to activate?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Answer&lt;/strong&gt;: You should, but it’s not 100% mandatory. Once you save your changes, UAG picks up the new file, but it will not apply to existing sessions. In such a situation, you can simply restart IIS to make the changes apply. However, activation is still *very* important, because it stores the configuration in TMG. If you don’t, then a restart of the UAG server or its services will re-read the file from TMG storage and overwrite the file on-disk, wiping the changes you made…or even the custom file itself. Another reason for needing to activate is that it also propagates the changes to other UAG array members. &lt;/p&gt;  &lt;p&gt;3) In the SRA config file, is the URL case sensitive?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: No&lt;/p&gt;  &lt;p&gt;4) When I configure an SRA S&amp;amp;R or Add_signature, does it change ALL instances in a file, or just the 1st?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: All instanced that match are affected&lt;/p&gt;  &lt;p&gt;5) When do I need to perform Base64 encoding?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: when the text contains XML forbidden characters &amp;lt; &amp;gt; and &amp;amp;&lt;/p&gt;  &lt;p&gt;6) Are the commands in SRA, like ADD_SIGNATURE case sensitive?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: Yes&lt;/p&gt;  &lt;p&gt;7) Are the parameters in commands, like &amp;quot;Location&amp;quot; and &amp;quot;after&amp;quot; case sensitive?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: No&lt;/p&gt;  &lt;p&gt;8) Does the CustomUpdate XML should be just the ‘delta’ or full XML modified?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: The Custom XML should only be the delta, and contain only changes you want to make, and not the entire default file. In fact, it’s important to NOT copy over the fill default file, as this causes UAG to work harder, processing everything twice. Also, it makes it a lot harder to support, as it may be hard to find, within the modified file, where changes were made.&lt;/p&gt;  &lt;p&gt;9) Does Appwrap/xml version that is listed at the top of the file (for example, “&amp;lt;APP_WRAP ver=&amp;quot;3.0&amp;quot; id=&amp;quot;RemoteAccess_HTTPS.xml&amp;quot;&amp;gt;”) matters? Do we need to change that, if we update UAG?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer:&lt;/b&gt; No – the version or ID are only relevant for administrative purposes.&lt;/p&gt;  &lt;p&gt;10) What is the processing order of SRA and AppWrap?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;: When UAG delivers a requested page to the client, SRA processes the file first, followed by AppWrap.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3563631" width="1" height="1"&gt;</description></item><item><title>How many IP addresses do I need?</title><link>http://blogs.technet.com/b/ben/archive/2013/04/04/how-many-ip-addresses-do-i-need.aspx</link><pubDate>Thu, 04 Apr 2013 22:07:25 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3563626</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3563626</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/04/how-many-ip-addresses-do-i-need.aspx#comments</comments><description>&lt;p&gt;Setting up a UAG server array provides organizations with the ability to provide higher availability, but it also brings up a common question of how many IP addresses does one need. The confusion usually revolves around two topics – internal vs. external IPs, and NLB vs external LB. Let’s try to clear up some misconceptions here.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Terms:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NLB&lt;/b&gt; – Load balancing facilitated by Windows, as opposed to regular LB. Also known as “Integrated NLB”&lt;/p&gt;  &lt;p&gt;&lt;b&gt;LB&lt;/b&gt; – Load Balancing facilitated by a 3&lt;sup&gt;rd&lt;/sup&gt; party device, such as F5’s BigIP range of load balancing appliances or Citrix’s NetScaler. Also known as “External LB” or “Non-integrated NLB”&lt;/p&gt;  &lt;p&gt;&lt;b&gt;DIP&lt;/b&gt; – Dedicated IP. An IP address assigned to a resource that is unique to every server, as opposed to a VIP.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;VIP&lt;/b&gt; – Virtual IP. An IP address shared by several resources, either directly (such as with NLB) or indirectly (such as with external LB)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;External Network&lt;/b&gt; – The network through which UAG receives client requests, and replies to them. It could be the DMZ network, but is referred to as “External” for clarity.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Internal Network&lt;/b&gt; - The network through which UAG forwards requests from clients to internal (corporate) servers, and receives a response. It could be the DMZ network, but is referred to as “Internal” for clarity.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;DA&lt;/b&gt; – DirectAccess, one of UAG’s two primary deployment scenarios.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Application Publishing&lt;/b&gt; – The second of UAG’s two primary deployment scenarios.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;APDA Mode&lt;/b&gt; – A UAG Server configured for both Application Publishing and DirectAccess simultaneously&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Single Server scenario&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;If you use a single UAG Server, then you need:&lt;/p&gt;  &lt;p&gt;1. one IP address for each portal or ADFS trunk&lt;/p&gt;  &lt;p&gt;2. If you have redirect trunks (from HTTP to HTTPS), then they use the same IP as their counterpart HTTPS trunk, and there’s no need for additional IPs&lt;/p&gt;  &lt;p&gt;3. The Trunk IPs can be either public IP addresses, or NAT IP Addresses*&lt;/p&gt;  &lt;p&gt;4. For DA, you need two IP addresses, which must be public and consecutive, to serve the DA component. &lt;/p&gt;  &lt;p&gt;5. If you are in APDA mode, you would need at least 3 IPs – 2 for DA, and one for each trunk. Note that in this situation, you should use the &lt;b&gt;lowest&lt;/b&gt; IPs available for the DA connection (for example, if you have the IPs 4.1.1.1, 4.1.1.2 and 4.1.1.3, Use the .1 and .2 for DA, and .3 for the trunk).&lt;/p&gt;  &lt;p&gt;* If you are using NAT, keep in mind that NAT devices often perform connection optimization, which could cause problems for clients. For example, this might cause a user to be “dropped” into another user’s session, because the NAT device reuses an existing connection to UAG for the 2&lt;sup&gt;nd&lt;/sup&gt; user’s request. As a precaution, make sure your NAT device is not optimizing connections.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Array scenario, with integrated NLB&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;In an array with NLB, you need DIPs and VIPs, like this:&lt;/p&gt;  &lt;p&gt;1. One Internal DIP for each server in the array (these can be NAT IPs)&lt;/p&gt;  &lt;p&gt;2. One external DIP for each server in the array (These must be public IPs)&lt;/p&gt;  &lt;p&gt;3. For Application publishing, one external VIP**, used by all array members&lt;/p&gt;  &lt;p&gt;4. For DirectAccess, one internal VIP**, used by all array members&lt;/p&gt;  &lt;p&gt;5. For DirectAccess, two consecutive external VIPs**, used by all array members&lt;/p&gt;  &lt;p&gt;6. If you are in APDA mode, you would need at least &lt;u&gt;4&lt;/u&gt; VIPs – one internal, two externals for DA, and one external for each trunk. Note that in this situation, you should use the &lt;b&gt;lowest&lt;/b&gt; VIPs available for the DA connection (for example, if you have the IPs 4.1.1.1, 4.1.1.2 and 4.1.1.3, Use the .1 and .2 for DA, and .3 for the trunk).&lt;/p&gt;  &lt;p&gt;** Note that with NLB, the Virtual IPs are added using UAG’s NLB configuration screen (under Admin/Network Load Balancing). The NLB configuration within TMG or within Windows should NOT be used to configure these under any circumstance.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Array mode, with external Load Balancer (a.k.a. “non integrated LB”)&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;With an array, the VIPs are configured on the load balancer, and not on UAG. You still need the virtual IPs, but UAG is not aware of them, so you need to configure DA with the IPs like this:&lt;/p&gt;  &lt;p&gt;1. One Internal DIP for each server in the array (these can be NAT IPs)&lt;/p&gt;  &lt;p&gt;2. For DA, Two consecutive external DIPs for each server in the array (These must be public IPs)&lt;/p&gt;  &lt;p&gt;3. For Application publishing, one additional DIP for each member for each trunk&lt;/p&gt;  &lt;p&gt;4. For DA, two consecutive external VIPs, routed to the multiple DIPs&lt;/p&gt;  &lt;p&gt;5. For DA, one internal VIP, routed to the multiple internal DIPs&lt;/p&gt;  &lt;p&gt;6. For application publishing, one external VIP, routed to the multiple DIPs used by the trunk&lt;/p&gt;  &lt;p&gt;7. The VIPs are assigned and configured on the load balancer, and routed to the DIPs configured on the array members, with UAG not being aware of them&lt;/p&gt;  &lt;p&gt;When using an array, we recommend load balancing to be configured both on the internal side, and the external side. It’s possible, though, to have DA run without internal load balancing. If that is your plan, be sure to read the documentation for this scenario, to be sure your server meets the required configuration and that the impacted scenarios and features are acceptable to your organization. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3563626" width="1" height="1"&gt;</description></item><item><title>How to create a static redirector on a UAG trunk</title><link>http://blogs.technet.com/b/ben/archive/2013/04/03/how-to-create-a-static-redirector-on-a-uag-trunk.aspx</link><pubDate>Wed, 03 Apr 2013 18:00:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3563129</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3563129</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/03/how-to-create-a-static-redirector-on-a-uag-trunk.aspx#comments</comments><description>&lt;p&gt;Using UAG as a static redirector is a major overkill, but occasionally, it makes better sense to use an existing server than build a special box just for a redirect. While IIS has a simple option to setup a redirector, making such configuration changes on the IIS on a UAG server is unsupported. In order to setup a redirect, you have to customize UAG a little, and there are two ways to do so.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;First option: redirect using a custom login page.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The login page is the 1&lt;sup&gt;st&lt;/sup&gt; customizable page that is loaded upon a user visiting a trunk. By creating a custom login page, you can perform a redirect on it. To do so:&lt;/p&gt;  &lt;p&gt;1. Create a custom login page to do the redirect. The redirect can be done using the response.redirect ASP command, or using a client-side meta-refresh. This would like one of the below options:   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="367"&gt;           &lt;p&gt;ASP example&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="367"&gt;           &lt;p&gt;HTML example&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="367"&gt;           &lt;p&gt;&amp;lt;%             &lt;br /&gt;Response.redirect “http://www.targeturl.com”              &lt;br /&gt;%&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="367"&gt;           &lt;p&gt;&amp;lt;META HTTP-EQUIV=Refresh CONTENT=&amp;quot;0; URL=http://www.targeturl.com/&amp;quot;&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;2. Save your custom file in &lt;strong&gt;&amp;lt;UAG path&amp;gt;/von/internalsite/CustomUpdate&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;3. On your trunk, go to &lt;strong&gt;Advanced Trunk configuration&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;4. Switch to the &lt;strong&gt;Authentication&lt;/strong&gt; tab&lt;/p&gt;  &lt;p&gt;5. Adjust the path of the logon page to point to your custom file:&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/0336.clip_5F00_image002_5F00_41D1D03A.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-73-55-metablogapi/7282.clip_5F00_image002_5F00_thumb_5F00_4884D9BD.jpg" width="670" height="262" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Optionally, switch to the &lt;strong&gt;Session&lt;/strong&gt; tab and DISABLE component installation and activation.&lt;/p&gt;  &lt;p&gt;7. Click &lt;strong&gt;OK&lt;/strong&gt;, and activate the configuration.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Second option: redirect using a custom portal page.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This method is based on setting the trunk to be unauthenticated (anonymous), and creating a custom portal home page to do the redirect. To use this:&lt;/p&gt;  &lt;p&gt;1. Open the trunk’s &lt;strong&gt;advanced Trunk Config&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;2. In the &lt;b&gt;Authentication&lt;/b&gt; tab, set the trunk to be unauthenticated (uncheck the “require users to authenticate”)&lt;/p&gt;  &lt;p&gt;3. Optionally, switch to the Session tab and DISABLE component installation and activation.&lt;/p&gt;  &lt;p&gt;4. Click OK.&lt;/p&gt;  &lt;p&gt;5. Open the folder &amp;lt;UAG Path&amp;gt;\von\portalhomepage\CustomUpdate&lt;/p&gt;  &lt;p&gt;6. Create a file named “&amp;lt;trunk name&amp;gt;&amp;lt;0 or 1&amp;gt;default.aspx” there. Use 1 if this is an HTTPS trunk, and 0 if it’s an HTTP trunk.&lt;/p&gt;  &lt;p&gt;7. In that file, create the code to do the redirect. As in option 1, you can use ASP or HTML. However, the file has to have the RUNAT code in it (otherwise, the .Net framework will produce an error).    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="367"&gt;           &lt;p&gt;ASP example&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="367"&gt;           &lt;p&gt;HTML example&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="367"&gt;           &lt;p&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;             &lt;br /&gt;&amp;lt;/head&amp;gt;              &lt;br /&gt;&amp;lt;%              &lt;br /&gt;Response.redirect “http://www.targeturl.com”              &lt;br /&gt;%&amp;gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="367"&gt;           &lt;p&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;             &lt;br /&gt;&amp;lt;/head&amp;gt;              &lt;br /&gt;&amp;lt;META HTTP-EQUIV=Refresh CONTENT=&amp;quot;0; URL=http://www.targeturl.com/&amp;quot;&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;8. Activate the configuration.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3563129" width="1" height="1"&gt;</description></item><item><title>How to customize the portal page</title><link>http://blogs.technet.com/b/ben/archive/2013/04/03/how-to-customize-the-portal-page.aspx</link><pubDate>Tue, 02 Apr 2013 23:45:31 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3562916</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3562916</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/03/how-to-customize-the-portal-page.aspx#comments</comments><description>&lt;p&gt;When logging in to UAG, it will display the portal itself, but sometimes, you might want to have your own page. For example, one scenario is when you want to have your own custom links to your applications, or a very customized design that goes beyond what you can achieve with editing the regular standard.master page. The good news is that the UAG portal page supports the standard CustomUpdate customization framework just like most of the pieces on UAG. However, the portal code is written in ASP.NET, which means you need some accommodations to make it work.&lt;/p&gt;  &lt;p&gt;To customize the page, follow these steps:&lt;/p&gt;  &lt;p&gt;1. Create your custom home page as “default.aspx”, and place it in &amp;lt;UAG Path&amp;gt;/Von/PortalHomePage/CustomUpdate&lt;/p&gt;  &lt;p&gt;2. Make sure the page has the basic formatting as below:   &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;head runat=”server”&amp;gt;             &lt;br /&gt;&amp;lt;/head&amp;gt;              &lt;br /&gt;&amp;lt;%              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ‘Your custom ASP code***              &lt;br /&gt;%&amp;gt;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ‘Your custom HTML and/or JavaScript&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;i&gt;***You can use any standard HTML, ASP and JavaScript code in there – just make sure the page starts with &lt;b&gt;&amp;lt;head runat=”server”&amp;gt;&amp;lt;/head&amp;gt;&lt;/b&gt;, otherwise it will cause the .Net Framework to error out.***&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;3. If you want the page to have images, place the image files in /von/PortalHomePage/Images/CustomUpdate, and then, when referring to them in the code, use something like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&amp;lt;img src=images/CustomUpdate/logo.jpg&amp;gt;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;4. You don’t have to activate the configuration after each change, as UAG will update immediately (save time when testing and playing around), but do make sure you activate occasionally, so as to store the configuration in TMG storage, and propagate across array members, if you are using an array.&lt;/p&gt;  &lt;p&gt;Naturally, you can use any web-page editing software to create your page. You can simply copy the links from the default portal page, and then build your own page around them in any way you like, or create a richer page content with ASP and/or JavaScript. As in any customization, the possibilities are infinite.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3562916" width="1" height="1"&gt;</description></item><item><title>Publishing OMA (Outlook Mobile Access) with UAG</title><link>http://blogs.technet.com/b/ben/archive/2013/04/02/publishing-oma-outlook-mobile-access-with-uag.aspx</link><pubDate>Tue, 02 Apr 2013 20:53:32 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3562871</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3562871</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/02/publishing-oma-outlook-mobile-access-with-uag.aspx#comments</comments><description>&lt;p&gt;OMA has been a feature of exchange for many years. Unfortunately, UAG does not have a built in template to publish it, and it’s an &lt;b&gt;&lt;u&gt;unsupported&lt;/u&gt;&lt;/b&gt; scenario. However, if you need to publish it, and don’t mind the risks of being in unsupported territory, here’s how to publish it.&lt;/p&gt;  &lt;p&gt;The key to OMA is that you simply append /OMA to your Outlook Web Access (OWA) URL. For example, if you were to access OWA internally (not via UAG!) using the URL &lt;a href="http://ExchSrv01/owa/"&gt;http://ExchSrv01/owa/&lt;/a&gt;, then to access OMA on the same server you would simply type in &lt;a href="http://ExchSrv01/owa/oma"&gt;http://ExchSrv01/owa/oma&lt;/a&gt; into your browser...and you would get your inbox in the OMA 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-73-55-metablogapi/4118.clip_5F00_image002_5F00_75D788BC.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-73-55-metablogapi/2055.clip_5F00_image002_5F00_thumb_5F00_03A9CEB8.jpg" width="427" height="194" /&gt;&lt;/a&gt; à &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-73-55-metablogapi/1460.clip_5F00_image004_5F00_638EC1FA.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_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-73-55-metablogapi/4812.clip_5F00_image004_5F00_thumb_5F00_2A77E4F8.jpg" width="214" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When publishing Outlook Web Access with UAG, it simply publishes the /OWA/ virtual directory on the Exchange CAS, so all you have to do is append /oma to the URL, and it takes you to the OMA view. However, one caveat is that UAG is not designed to permit access to the /oma/ URL. A second issue is that you can’t expect all your users to manually edit the URL every time they need OMA. &lt;/p&gt;  &lt;p&gt;To solve the 1&lt;sup&gt;st&lt;/sup&gt; issue, simple edit the URL set on the UAG server. To do so, you need to create an access rule to permit any URL that begins with /owa/oma. Creating a new URL set rule in UAG is simple, but it has to match the same application type that your normal OWA is published with. If this is Exchange 2010, then the rule name has to be “ExchangePub2010_Rule99”. If it’s Exchange 2007, then it would be “ExchangePub2007_Rule99”. Here’s how such a rule would look on the advanced trunk configuration:&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/1768.clip_5F00_image006_5F00_756B55C7.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_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-73-55-metablogapi/8640.clip_5F00_image006_5F00_thumb_5F00_30BEBB86.jpg" width="602" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The steps:&lt;/p&gt;  &lt;p&gt;1. Open the trunk’s &lt;b&gt;advanced trunk configuration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2. Switch to the &lt;b&gt;URL Set&lt;/b&gt; tab&lt;/p&gt;  &lt;p&gt;3. Click &lt;b&gt;Add Primary&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;4. Type the rule name as “&lt;b&gt;ExchangePub2010_Rule99&lt;/b&gt;” (if it’s Exchange 2010)&lt;/p&gt;  &lt;p&gt;5. Change the action to “&lt;b&gt;Accept&lt;/b&gt;”&lt;/p&gt;  &lt;p&gt;6. Type the URL as &lt;b&gt;“/owa/oma.*&lt;/b&gt;”&lt;/p&gt;  &lt;p&gt;7. Set the parameters to “&lt;b&gt;ignore&lt;/b&gt;”&lt;/p&gt;  &lt;p&gt;8. Open the methods drop-down, and click on &lt;b&gt;GET&lt;/b&gt;. Hold the CTRL key and click on &lt;b&gt;POST&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;9. Click &lt;b&gt;OK&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;10. The placement of the rule on the list does not matter, so no need to move it up or down.&lt;/p&gt;  &lt;p&gt;The next thing is to provide a link on the portal for users to click-on. Since you already have the application published, all we have to do is create a dummy application that doesn’t actually publish any servers, and has a hard-coded “portal link” to the OMA URL. Here are the steps:&lt;/p&gt;  &lt;p&gt;1. On the trunk’s main page, click &lt;b&gt;ADD&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2. From the application list’s &lt;b&gt;Web&lt;/b&gt; group, select “&lt;b&gt;Other Web App(Portal Hostname)&lt;/b&gt;”&lt;/p&gt;  &lt;p&gt;3. Type the application name, as you would want it to appear on the portal. For example “Outlook Mobile Access”&lt;/p&gt;  &lt;p&gt;4. Type some application type. It can be &lt;b&gt;anything&lt;/b&gt;, as it won’t be used in any configuration.&lt;/p&gt;  &lt;p&gt;5. In step 3, select “&lt;b&gt;configure an application server&lt;/b&gt;” and click &lt;b&gt;next&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;6. In step 4, type a name of some internal server. It will &lt;u&gt;not&lt;/u&gt; be used in any way, and can be anything, but it’s advisable to use a real name. If you don’t, the activation will take longer as UAG tries to resolve a non-existing name.&lt;/p&gt;  &lt;p&gt;7. In step 5, leave SSO disabled&lt;/p&gt;  &lt;p&gt;8. In step 6, change the &lt;b&gt;application URL&lt;/b&gt; to the actual public hostname used by your OWA, and append /OMA to it. For example, if your normal external OWA** link is &lt;a href="https://uag.contoso.com/owa"&gt;https://uag.contoso.com/owa&lt;/a&gt;, type in &lt;a href="https://uag.contoso.com/owa/oma"&gt;https://uag.contoso.com/owa/oma&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;9. Finish the wizard and activate the configuration.&lt;/p&gt;  &lt;p&gt;**If you’re not sure what’s your external OWA URL is, simply open the OWA application published on your portal, and go to the Portal Link tab. Copy the “application URL” setting from that, and append /OMA to it. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3562871" width="1" height="1"&gt;</description></item><item><title>Sending mail to the administrator with UAG</title><link>http://blogs.technet.com/b/ben/archive/2013/04/02/sending-mail-to-the-administrator-with-uag.aspx</link><pubDate>Tue, 02 Apr 2013 20:50:56 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3562870</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3562870</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/02/sending-mail-to-the-administrator-with-uag.aspx#comments</comments><description>&lt;p&gt;On the UAG portal, you can find an envelope that is a link to create a mail to the site’s administrator (presumably…that’s you!). &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/4863.clip_5F00_image002_5F00_6009E0BE.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-73-55-metablogapi/2728.clip_5F00_image002_5F00_thumb_5F00_0AE244D1.jpg" width="445" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However, by default, that link is empty and would generate an empty Email. Editing it requires a little bit of customization, and here are the steps:&lt;/p&gt;  &lt;p&gt;1. Navigate to the folder &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&amp;lt;UAG Folder&amp;gt;\von\PortalHomePage\Data\SiteMap\ToolBar\&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;2. Copy the file &lt;b&gt;web.sitemap&lt;/b&gt; into the &lt;b&gt;CustomUpdate&lt;/b&gt; folder&lt;/p&gt;  &lt;p&gt;3. Open the file inside CustomUpdate with the text editor of your choice&lt;/p&gt;  &lt;p&gt;4. Go to line 103, which would read:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&amp;lt;siteMapNode url=”mailto: “&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;5. Add your Email after &lt;b&gt;mailto:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;6. Save the file, and &lt;b&gt;activate&lt;/b&gt; the configuration to store your changes permanently. If you have an array, this would also replicate them to other array members&lt;/p&gt;  &lt;p&gt;If you’d like, you can create a link that will also populate the subject and body of the Email, as well as other fields. However, if you want to do this, know that the &amp;amp; symbol is forbidden in XML, and will cause an application error on the portal. To get around that, use &lt;b&gt;&amp;amp;amp;&lt;/b&gt; instead. 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-73-55-metablogapi/0675.clip_5F00_image004_5F00_7FB8BA86.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_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-73-55-metablogapi/7522.clip_5F00_image004_5F00_thumb_5F00_4AAC2B56.jpg" width="488" height="131" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Other Email link formatting options include:&lt;/p&gt;  &lt;p&gt;1. Specifying additional recipients&lt;/p&gt;  &lt;p&gt;&lt;a href="mailto:me@you.com,he@you.com,she@you.com"&gt;mailto:me@you.com,he@you.com,she@you.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Adding a CC&lt;/p&gt;  &lt;p&gt;&lt;a href="mailto:m2&amp;amp;you.com&amp;amp;cc=he@you.com"&gt;mailto:m2&amp;amp;you.com&amp;amp;cc=he@you.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Adding a BCC &lt;/p&gt;  &lt;p&gt;&lt;a href="mailto:m2&amp;amp;you.com&amp;amp;bcc=he@you.com"&gt;mailto:m2&amp;amp;you.com&amp;amp;bcc=he@you.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Multiple BODY lines:&lt;/p&gt;  &lt;p&gt;&lt;a href="mailto:me@you.com&amp;amp;subject=UAG&amp;amp;body=Regarding%0AUAG"&gt;mailto:me@you.com&amp;amp;subject=UAG&amp;amp;body=Regarding%0AUAG&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(%0A creates a line break)&lt;/p&gt;  &lt;p&gt;The following blog post by Dennis Lee shows additional options related to Email links in UAG:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forefrontdennislee.wordpress.com/2010/11/23/the-forgotten-contact-us-button/"&gt;http://forefrontdennislee.wordpress.com/2010/11/23/the-forgotten-contact-us-button/&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=3562870" width="1" height="1"&gt;</description></item><item><title>Using AutoIT to automate UAG</title><link>http://blogs.technet.com/b/ben/archive/2013/04/02/using-autoit-to-automate-uag.aspx</link><pubDate>Tue, 02 Apr 2013 19:12:10 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3562817</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3562817</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/02/using-autoit-to-automate-uag.aspx#comments</comments><description>&lt;p&gt;A common question comes up from people who need to create a complex configuration in UAG, and are looking for a better way to do it instead of manually entering it. For example, creating multiple applications on the UAG portal, rather than going through the application wizard multiple times.&lt;/p&gt;  &lt;p&gt;Unfortunately, editing the UAG configuration directly by editing UAG’s EGF file is not supported. However, this can be done rather easily using various GUI automation tools. There are plenty of these, with some being simpler than others. The one I like the most is AutoIT, which allows you to create a keyboard and mouse automation script very easily. It’s also free! &lt;/p&gt;  &lt;p&gt;To use AutoIT, you need to first download the script engine and install it on your UAG server. Download it from &lt;a href="http://www.autoitscript.com/site/autoit/downloads/"&gt;http://www.autoitscript.com/site/autoit/downloads/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;AutoIT’s script files are text files with the extension AU3. To use it, simple create such a file, and use the various mouse and keyboard commands. For example, the set below is a partial automation for adding a TSPub application to UAG:&lt;/p&gt;  &lt;p&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;Mouseclick (“”,700,400)             &lt;br /&gt;Mouseclick (“”,600,620)              &lt;br /&gt;Mouseclick (“”,345,422)              &lt;br /&gt;Mouseclick (“”,600,620)              &lt;br /&gt;Send(“Access”)              &lt;br /&gt;Mouseclick (“”,600,620)              &lt;br /&gt;Mouseclick (“”,600,620)              &lt;br /&gt;Mouseclick (“”,345,260)              &lt;br /&gt;Send(“c:\temp\apps.tspub”)              &lt;br /&gt;Mouseclick (“”,600,620)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The geometrics of the screen vary by server, and application, of course, so you’ll have to come up with your coordinates to do these things. One easy way to figure out cursor location is by using a graphic application like &lt;a href="http://www.getpaint.net/"&gt;PAINT.NET&lt;/a&gt;. Take a screenshot, and paste into the app, and then move the mouse to where you want. The program will show the coordinates at the bottom-left of the screen. You can also use &lt;a href="http://www.freewarefiles.com/Megacows-Mouse-Coordinates-V_program_207.html"&gt;http://www.freewarefiles.com/Megacows-Mouse-Coordinates-V_program_207.html&lt;/a&gt; , which shows this at the bottom of the screen. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3562817" width="1" height="1"&gt;</description></item><item><title>Endpoint policies galore</title><link>http://blogs.technet.com/b/ben/archive/2013/04/02/endpoint-policies-galore.aspx</link><pubDate>Tue, 02 Apr 2013 18:40:16 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3562806</guid><dc:creator>Ben Ari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/ben/rsscomments.aspx?WeblogPostID=3562806</wfw:commentRss><comments>http://blogs.technet.com/b/ben/archive/2013/04/02/endpoint-policies-galore.aspx#comments</comments><description>&lt;p&gt;If you have a freshly installed UAG server in front of you, you might be considering which Endpoint policies to set for your applications. UAG comes with no less than 27 built-in predefined policies just for Windows computers (plus another 34 policies for Mac and Linux), but their naming doesn’t always indicate what they actually do. Technically, it’s quite easy to see it by opening each one and seeing, but I’d like to save you some of that time. Here are all the policies, and their default configuration:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Default Non Web Application Access&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy contains the default “&lt;b&gt;Any Anti Virus&lt;/b&gt;” policy, which requires the endpoint to have &lt;u&gt;any&lt;/u&gt; AV product installed, updated and running. Any AV that is supported by the &lt;b&gt;Windows Security Center&lt;/b&gt; (Action center in Windows 7) would meet that sub-policy. In addition, this policy requires that the computer meets the &lt;b&gt;certified&lt;/b&gt; &lt;b&gt;endpoint&lt;/b&gt; policy, or the &lt;b&gt;corporate machine&lt;/b&gt; policy, or the &lt;b&gt;privileged endpoint&lt;/b&gt; policy, or have the &lt;b&gt;endpoint&lt;/b&gt; &lt;b&gt;cleanup&lt;/b&gt; component &lt;b&gt;installed&lt;/b&gt; and &lt;b&gt;running&lt;/b&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Default Privileged Endpoint&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy requires that the computer meets the policies defined as “privileged endpoint” on the trunk. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Default Session Access&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Default Web Application Access&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Default Web Application Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy requires that the computer meets the &lt;b&gt;certified endpoint&lt;/b&gt; policy, or the &lt;b&gt;corporate machine&lt;/b&gt; policy, or the &lt;b&gt;privileged endpoint&lt;/b&gt; policy, or have the &lt;b&gt;endpoint cleanup&lt;/b&gt; component &lt;b&gt;installed&lt;/b&gt; and &lt;b&gt;running&lt;/b&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Default Web Application Restricted Zone Access&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Default Web Application Upload&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy contains the default “&lt;b&gt;Any Anti Virus&lt;/b&gt;” policy, which requires the endpoint to have &lt;u&gt;any&lt;/u&gt; AV product installed, updated and running.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft CRM 4 Upload&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft CRM 4 Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft CRM 4 Enhanced Security&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft OWA 2010 Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft OWA 2010 Upload&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Portal Server 2003 Admin Zones&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Portal Server 2003 Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Portal Server 2003 Enhanced Security&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Portal Server 2003 Upload Checkin&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Server 2007 Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Server 2007 Upload CheckIn&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office SharePoint Server 2007 Enable Explorer View&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft SharePoint Server 2010 Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft SharePoint Server 2010 Upload&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;OWA Private Computer&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy requires that the computer meets the policies defined as “privileged endpoint” on the trunk. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft OWA 2007 Download&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Microsoft OWA 2007 Upload&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Always&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy has no requirements&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Never&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This policy is set to block all access&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As you can see, most of the default policies do not actually have any requirements. They simply include the text “true”, which means that the policy will evaluate to “pass” no matter what the endpoint parameters are:&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/6177.clip_5F00_image002_5F00_06DD41C6.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-73-55-metablogapi/2476.clip_5F00_image002_5F00_thumb_5F00_31B5A5D8.jpg" width="281" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you’re asking yourself what is the purpose of having the many policies, with so many of them having no requirements or being identical, the answer is that the policies come in groups, and every top-level group has to have the full set. For example, the &lt;b&gt;Default Web Application&lt;/b&gt; policy has to have the four sub policies of &lt;b&gt;Access&lt;/b&gt;, &lt;b&gt;Upload&lt;/b&gt;, &lt;b&gt;Download&lt;/b&gt; and &lt;b&gt;Restricted zone&lt;/b&gt;. Even though the Access and Restricted Zone are identical and have no requirements, we still have to have them to complete the &lt;b&gt;Default Web Application&lt;/b&gt; policy.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3562806" width="1" height="1"&gt;</description></item></channel></rss>