<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>mszCool's thoughts and cents revealed</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/mszcool/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/mszcool/feed.xml</link>
    <description>Real illiteracy is the inability to go beyond and be creative...</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:20:51 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Azure VMs – SQL Server AlwaysOn Setup across multiple Data Centers fully automated (Classic Service Management)</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/azure-vms-sql-server-alwayson-setup-across-multiple-data-centers-fully-automated-classic-service-management</link>
      <pubDate>Tue, 05 May 2015 11:16:36 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2015/05/05/azure-vms-sql-server-alwayson-setup-across-multiple-data-centers-fully-automated-classic-service-management/</guid>
      <description><![CDATA[I’ve just published some code as a sample (under MIT License as per my github repository) which was...]]></description>
      <content:encoded><![CDATA[<p>I’ve just published some code as a sample (under MIT License as per my github repository) which was the result of work with a partner for fully automating a Cross-Region SQL AlwaysOn Deployment with Azure VMs and 2 Azure Data Centers / Regions. It is about ~2500 lines of PowerShell Script Code… For more details refer to <a title="http://blog.mszcool.com/index.php/2015/05/azure-vms-sql-server-alwayson-setup-across-multiple-data-centers-fully-automated-classic-service-management/" href="http://blog.mszcool.com/index.php/2015/05/azure-vms-sql-server-alwayson-setup-across-multiple-data-centers-fully-automated-classic-service-management/">http://blog.mszcool.com/index.php/2015/05/azure-vms-sql-server-alwayson-setup-across-multiple-data-centers-fully-automated-classic-service-management/</a> and <a title="https://github.com/mszcool/SqlAlwaysOnAzurePowerShellClassic" href="https://github.com/mszcool/SqlAlwaysOnAzurePowerShellClassic">https://github.com/mszcool/SqlAlwaysOnAzurePowerShellClassic</a>!!</p>]]></content:encoded>
    </item>
    <item>
      <title>Detecting if a Virtual Machine Runs in Microsoft Azure (Linux &amp; Windows) to Protect your Software when distributed via the Azure Marketplace</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/detecting-if-a-virtual-machine-runs-in-microsoft-azure-linux-windows-to-protect-your-software-when-distributed-via-the-azure-marketplace</link>
      <pubDate>Thu, 16 Apr 2015 01:56:00 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2015/04/16/detecting-if-a-virtual-machine-runs-in-microsoft-azure-linux-windows-to-protect-your-software-when-distributed-via-the-azure-marketplace/</guid>
      <description><![CDATA[Since the introduction of the Azure Marketplace many publishers are trying to protect their software...]]></description>
      <content:encoded><![CDATA[<p>Since the introduction of the <strong>Azure Marketplace</strong> many publishers are trying to protect their software from being taken off Virtual Machines that have been created through the Azure Marketplace since that would allow customers to run the software without being charged for it. In this blog-post I do show several options to detect in your software, whether a Virtual Machine runs in Azure or not. Using all of them together or any combination is possible as well, of course. Read more on my blog: <a href="http://blog.mszcool.com/index.php/2015/04/detecting-if-a-virtual-machine-runs-in-microsoft-azure-linux-windows-to-protect-your-software-when-distributed-via-the-azure-marketplace/">http://blog.mszcool.com/index.php/2015/04/detecting-if-a-virtual-machine-runs-in-microsoft-azure-linux-windows-to-protect-your-software-when-distributed-via-the-azure-marketplace/</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Azure Websites - Updating my Wordpress Blog and PHP runtime in a save way with Websites Backup</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/azure-websites-updating-my-wordpress-blog-and-php-runtime-in-a-save-way-with-websites-backup</link>
      <pubDate>Sat, 17 Jan 2015 13:31:25 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2015/01/17/azure-websites-updating-my-wordpress-blog-and-php-runtime-in-a-save-way-with-websites-backup/</guid>
      <description><![CDATA[As some of my readers know my blog runs on Microsoft Azure Websites. Since I launched this new...]]></description>
      <content:encoded><![CDATA[<p>As some of my readers know my blog runs on Microsoft Azure Websites. Since I launched this new version back in summer 2014 I literally had no maintenance tasks to do. But about half a year ago I started getting notifications that PHP 5.3 will be deprecated on Azure Websites. Since my blog up until know ran Wordpress 3.x with PHP 5.3 I finally had to do something to ensure a smooth transition. If you want to see the detailed (yet simple) step-by-step journey and how cool Azure Websites plays together with Wordpress, PHP and MySQL, then read on here: <a title="http://blog.mszcool.com/index.php/2015/01/azure-websites-updating-my-wordpress-blog-and-php-runtime-in-a-save-way-with-websites-backup/" href="http://blog.mszcool.com/index.php/2015/01/azure-websites-updating-my-wordpress-blog-and-php-runtime-in-a-save-way-with-websites-backup/">http://blog.mszcool.com/index.php/2015/01/azure-websites-updating-my-wordpress-blog-and-php-runtime-in-a-save-way-with-websites-backup/</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Azure Batch – (Highly Scalable) Batch Processing with Microsoft Azure (and a Successor to GeRes2)</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/azure-batch-highly-scalable-batch-processing-with-microsoft-azure-and-a-successor-to-geres2</link>
      <pubDate>Thu, 20 Nov 2014 11:57:36 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2014/11/20/azure-batch-highly-scalable-batch-processing-with-microsoft-azure-and-a-successor-to-geres2/</guid>
      <description><![CDATA[Azure Batch is a completely managed service, you could see it as “batch processing as a service”. It...]]></description>
      <content:encoded><![CDATA[<p><em>Azure Batch is a completely managed service, you could see it as “batch processing as a service”. </em>It can be used for simple batch processing up to High-Performance-Compute (HPC) types of workloads. As such it fills the gap we tried to fill over the past year with GeRes2, an open source framework for batch-processing with Web/Worker Roles. From this time forward we fully recommend using Azure Batch instead of GeRes2.</p>  <p>To help you getting started, I built a comprehensive sample inspired by Mark Scurrell’s session at TechEd Europe that does OCR recognition with Tesseract on Azure Batch.</p>  <p>Interested in the sample as well as a complete PowerShell script that sets everything up for you in a fully automated way? Then read the full article on my blog at <a title="http://blog.mszcool.com/index.php/2014/11/azure-batch-highly-scalable-batch-processing-with-microsoft-azure-and-a-successor-to-geres2/" href="http://blog.mszcool.com/index.php/2014/11/azure-batch-highly-scalable-batch-processing-with-microsoft-azure-and-a-successor-to-geres2/">http://blog.mszcool.com/index.php/2014/11/azure-batch-highly-scalable-batch-processing-with-microsoft-azure-and-a-successor-to-geres2/</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Janet Moonshot &amp; FreeRADIUS on Microsoft Azure – An important step for Researchers for being able to use Microsoft’s Public Cloud Platform</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/janet-moonshot-freeradius-on-microsoft-azure-an-important-step-for-researchers-for-being-able-to-use-microsofts-public-cloud-platform</link>
      <pubDate>Wed, 18 Jun 2014 15:33:31 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2014/06/18/janet-moonshot-freeradius-on-microsoft-azure-an-important-step-for-researchers-for-being-able-to-use-microsofts-public-cloud-platform/</guid>
      <description><![CDATA[Over the past months I’ve spent some time working with Janet the UK’s National Research and...]]></description>
      <content:encoded><![CDATA[<p>Over the past months I’ve spent some time working with <a href="http://www.ja.net">Janet</a> the UK’s National Research and Education Network. As well as managing the operation and development of the Janet network, Janet runs a number of services for educationand research including operating eduroam(UK), the UK part of a large, global network established between all sorts of research and education facilities and institutions. </p>  <p>In addition to <a href="https://www.eduroam.org/">eduroam</a> and other services, one of the most important projects Janet is leading is the development and standardization of an open platform for authentication, authorization and trust management based on existing standards: </p>  <ul>   <li><a href="http://tools.ietf.org/html/rfc3748">EAP</a>, </li>    <li><a href="http://tools.ietf.org/html/rfc2865">RADIUS</a> and </li>    <li><a href="http://tools.ietf.org/html/rfc2743">GSS-API</a>/<a href="http://msdn.microsoft.com/en-us/library/aa380493.aspx">SSPI</a>/SASL. </li> </ul>  <p>This platform is called <a href="https://community.ja.net/groups/moonshot">Project Moonshot</a>. </p>  <p>Simply put, Moonshot in conjunction with FreeRADIUS is an identity provider and a security token service. Nevertheless it is primarily based on the protocols mentioned above – EAP, RADIUS and GSS-API/SSPI/SASL instead of WS-Federation, OAuth or SAML-P (although one of the token formats supported by Moonshot are SAML tokens). </p>  <h2><b>Moonshot and FreeRADIUS on Azure</b></h2>  <p>The result of our work with Janet was the release of a VM Depot Image that enables everyone to start testing and setting up Moonshot &amp; FreeRADIUS on Microsoft Azure Virtual Machines. Interested in reading more – then go to my blog to find out all the technical details: </p>  <p align="center"><a title="Janet Moonshot &amp; FreeRADIUS on Windows Azure – An important step for Researchers for being able" href="http://blog.mszcool.com/index.php/2014/06/janet-moonshot-freeradius-on-windows-azure-an-important-step-for-researchers-for-being-able-to-use-microsofts-public-cloud-platform/">Janet Moonshot &amp; FreeRADIUS on Microsoft Azure – An important step for Researchers for being able</a></p>]]></content:encoded>
    </item>
    <item>
      <title>GeRes2 – An OSS Framework for Reliable Execution of Background Jobs on Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/geres2-an-oss-framework-for-reliable-execution-of-background-jobs-on-azure</link>
      <pubDate>Mon, 02 Jun 2014 13:42:02 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2014/06/02/geres2-an-oss-framework-for-reliable-execution-of-background-jobs-on-azure/</guid>
      <description><![CDATA[A few weeks ago we published an open source framework that covers a scenario required by many...]]></description>
      <content:encoded><![CDATA[<p>A few weeks ago we published an open source framework that covers a scenario required by many partners I&rsquo;ve been working with on Azure over the course of the past 4 years: <strong>asynchronous execution of jobs on compute instances in the background &ndash; or simple batch processing</strong>.</p>
<p>Click here if you want to learn more: <a href="http://blog.mszcool.com/index.php/2014/06/geres2-an-oss-framework-for-reliable-execution-of-background-jobs-on-azure/">http://blog.mszcool.com/index.php/2014/06/geres2-an-oss-framework-for-reliable-execution-of-background-jobs-on-azure/</a>.</p>
<p>As one of the product owners of this project I am really proud of what we achieved and the collaboration we're having now with the Azure product group. Just also&nbsp;visit our&nbsp;Codeplex Workspace (geres2.codeplex.com) if you're interested in learning more, trying it out and contributing to the project.&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Java &amp; Windows Azure – Using vFabric TC Server with the Azure Plug-In for Eclipse</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/java-windows-azure-using-vfabric-tc-server-with-the-azure-plug-in-for-eclipse</link>
      <pubDate>Wed, 05 Mar 2014 12:36:00 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2014/03/05/java-windows-azure-using-vfabric-tc-server-with-the-azure-plug-in-for-eclipse/</guid>
      <description><![CDATA[If you plan to use vFabric TC Server as a container for your Java applications in Windows Azure PaaS...]]></description>
      <content:encoded><![CDATA[<p>If you plan to use <a href="http://www.vmware.com/products/vfabric-tcserver">vFabric TC Server</a> as a container for your Java applications in <a href="http://www.windowsazure.com/en-us/documentation/services/cloud-services/">Windows Azure PaaS Cloud Services</a> Worker Roles with the help of the <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh694271.aspx">Azure Plug-In for Eclipse</a>, you need to do some customization to the Azure plug-in for Eclipse and add component configuration.</p>
<p><span style="font-size: medium;"><a href="http://blog.mszcool.com/index.php/2014/03/java-windows-azure-using-vfabric-tc-server-with-the-azure-plug-in-for-eclipse/">This blog-post shows</a></span>, how you can do it and also gives some background information and context on the scenario.</p>]]></content:encoded>
    </item>
    <item>
      <title>Cloud - Windows Azure - Combining PaaS &amp; IaaS to get best of both worlds in your Architecture (cross-post - based on Basta 2013 Presentation)</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/cloud-windows-azure-combining-paas-iaas-to-get-best-of-both-worlds-in-your-architecture-cross-post-based-on-basta-2013-presentation</link>
      <pubDate>Thu, 26 Sep 2013 08:30:00 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2013/09/26/cloud-windows-azure-combining-paas-iaas-to-get-best-of-both-worlds-in-your-architecture-cross-post-based-on-basta-2013-presentation/</guid>
      <description><![CDATA[Combining Virtual Machines (Infrastructure-as-a-Service) with highly scalable Cloud Services...]]></description>
      <content:encoded><![CDATA[<p>Combining Virtual Machines (Infrastructure-as-a-Service) with highly scalable Cloud Services (Platform-as-a-Service) was very often an approach for the first step into the cloud for ISVs I've been working in the past years. <a title="My Blog Post" href="http://mszcool-blog-prod.azurewebsites.net/index.php/2013/09/cloud-windows-azure-combining-paas-iaas-to-get-best-of-both-worlds-in-your-architecture/">Read more here&nbsp;about&nbsp;when</a> that should be considered in an architecture and how it can be done on my new blog here: <a href="http://mszcool-blog-prod.azurewebsites.net/index.php/2013/09/cloud-windows-azure-combining-paas-iaas-to-get-best-of-both-worlds-in-your-architecture/">http://mszcool-blog-prod.azurewebsites.net/index.php/2013/09/cloud-windows-azure-combining-paas-iaas-to-get-best-of-both-worlds-in-your-architecture/</a></p>
<p>This article is essentially a short summary of a presentation I gave at the <a title="Basta Conference" href="http://basta.net/">Basta 2013 conference</a> in Mainz near Frankfurt which is one of Germany's largest .NET developer conference at this time...</p>]]></content:encoded>
    </item>
    <item>
      <title>My new Blog - on Windows Azure Websites</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/my-new-blog-on-windows-azure-websites</link>
      <pubDate>Tue, 27 Aug 2013 00:48:02 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2013/08/27/my-new-blog-on-windows-azure-websites/</guid>
      <description><![CDATA[Hi again!
It's about more than a year ago since I blogged for the last time. But now I've decided...]]></description>
      <content:encoded><![CDATA[<p>Hi again!</p>
<p>It's about more than a year ago since I blogged for the last time. But now I've decided to return to the blogging community, in a different shape. With the principle "eat your own dog food" I decided to move my blog to Windows Azure Websites as the platform really turned out to be cool and is released since this summer.</p>
<p>Check out my new blog at</p>
<p><a href="http://blog.mszcool.com">http://blog.mszcool.com</a></p>
<p>Cheers<br /><strong>Mario</strong></p>]]></content:encoded>
    </item>
    <item>
      <title>Basta Spring 2012 - Presentation - Claims-based Security in Practice - WIF, ADFS 2.0, SharePoint 2010 and Exchange 2010 / Outlook Web Access (OWA)</title>
      <link>https://docs.microsoft.com/archive/blogs/mszcool/basta-spring-2012-presentation-claims-based-security-in-practice-wif-adfs-2-0-sharepoint-2010-and-exchange-2010-outlook-web-access-owa</link>
      <pubDate>Wed, 29 Feb 2012 00:06:48 GMT</pubDate>
      <dc:creator><![CDATA[mszCool [mario]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mszcool/2012/02/29/basta-spring-2012-presentation-claims-based-security-in-practice-wif-adfs-2-0-sharepoint-2010-and-exchange-2010-outlook-web-access-owa/</guid>
      <description><![CDATA[I am a strong believer in claims-based security - those who've read my postings over the past years...]]></description>
      <content:encoded><![CDATA[<p>I am a strong believer in claims-based security - those who've read my postings over the past years know that, already. At this year's <a href="http://basta.net/2012spring">Basta 2012 Spring Edition</a> I've been giving a presentation on that topic again. It was primarily based on experience from my past years within Microsoft Services and some projects I've been involved in there.</p>  <p align="center"><a href="https://skydrive.live.com/redir.aspx?cid=d37c9d7bfbce8418&amp;resid=D37C9D7BFBCE8418!301&amp;parid=D37C9D7BFBCE8418!252" target="_blank">Please click here to download the presentation material.</a></p>  <p align="center"><a href="https://skydrive.live.com/redir.aspx?cid=d37c9d7bfbce8418&amp;resid=D37C9D7BFBCE8418!300&amp;parid=D37C9D7BFBCE8418!252" target="_blank">Please click here to download the demo applications and source code.</a>     <br />(note that I have removed all identifying references to my ADFS 2.0 STS)</p>  <p align="left">Below you find the most important facts from the session as ideas, concepts or aspects you should be aware of and keep in mind when moving to claims-based security. As usual there was not enough time to walk through all of the details, so maybe if time permits I will jump into some details in future blog postings.</p>  <p align="left"><strong>Claims-based security enables flexible yet simple authorization schemes:</strong></p>  <p align="left">That is the most important aspect I want you to take away. Smart designs with claims-based security can enable you to simplify authorization logic in your applications dramatically. Authorization can be controlled by the STS through rules that define, when you issue which claims. Authorization logic in the application then is as simple as querying for a claim of a specific type with a specific value.</p>  <p align="left">By deciding in the STS, which claims you want to issue based on the context (logged-in user, time of the day, etc.) you can get very close to implement the dream of a central authorization engine. Of course with current implementations (e.g. the ADFS 2.0 claims rules language) that might not be as comfortable as with dedicated entitlement systems. But from a price/performance-ration perspective that way you can get huge benefits for low costs.</p>  <p align="left"><strong>Security Token Services and Federated Security help building bridges across security domains:</strong></p>  <p align="left">By implementing trusts between security token services you can open up your service to users from your partner organizations without replicating user accounts or creating shadow accounts and the like. That is a huge benefit and reduces security risk dramatically. The reason for that is that users are authenticated in their own security domains (those of the partner organizations instead of replicated accounts or shadow accounts in your own organization. That way e.g. if they leave their company and get deleted from their old company's directory you don't have any action (such as deleting shadow accounts or replicated accounts). ADFS 2.0 supports such trust-relationships through Claims Provider Trusts:</p>  <ul>   <li>     <div align="left">In your ADFS 2.0 you setup the trusted IdP / STS of your partner as Claims Provider Trust.</div>   </li>    <li>     <div align="left">Your partner needs to configure your STS as a trusted Relying Party to which it issues tokens to.</div>   </li> </ul>  <p align="left"><strong>Claims-transformations are a powerful concept to &quot;normalize&quot; claims issued for your applications:</strong></p>  <p align="left">Again one of the most powerful concepts I've ever seen. In a smart design I'd recommend for each service you define a set of claims the service uses for authorization. These claims should be more service/application-specific. The STS can transform a variety of claims into those required by your application or service such as:</p>  <ul>   <li>     <div align="left">Active Directory group memberships into claims for your application.</div>      <ul>       <li>         <div align="left">e.g. members of the AD group &quot;Domain Admins&quot; get a &quot;super-user&quot;-claim with advanced permissions.</div>       </li>     </ul>   </li>    <li>     <div align="left">Role-claims issued from partner STS can be translated into your application-/service-specific claims by your STS.</div>      <ul>       <li>         <div align="left">e.g. every user with a &quot;Department&quot;-claim of value &quot;Purchase-Department&quot; issued from your partner STS is translated into the &quot;product-catalog-permission&quot; claim with value &quot;read&quot;.</div>       </li>     </ul>   </li> </ul>  <p align="left">The really neat aspect of this approach is that your services/applications now can support users coming from many different sources through your own STS because your STS is normalizing claims from all of those different sources to what your application or service truly needs for its authorization. The following code excerpt shows a sample rule from ADFS 2.0 that issues a custom claim <a href="http://mycustomclaims/masterclaim">http://mycustomclaims/masterclaim</a> if the user's User-Principal-Name (UPN) in AD is <a href="mailto:Administrator@demos1.local">Administrator@demos1.local</a> (line-breaks for readability, only!!):</p>  <blockquote>   <p><font face="Lucida Console">c:[Type ==&#160; <br />&#160;&#160;&#160;&#160; &quot;</font><a href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"><font face="Lucida Console">http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn</font></a><font face="Lucida Console">&quot;,&#160; <br />&#160;&#160; Value == &quot;Administrator@demos1.local&quot;]         <br />=&gt; issue(         <br />&#160;&#160;&#160;&#160;&#160;&#160; Type = &quot;</font><a href="http://mycustomclaims/masterclaim"><font face="Lucida Console">http://mycustomclaims/masterclaim</font></a><font face="Lucida Console">&quot;,        <br />&#160;&#160;&#160;&#160;&#160;&#160; Value = &quot;true&quot;);</font>       <br /></p> </blockquote>  <p align="left">Code in your application now can authorize based on the &quot;normalized&quot; claim issued above. ADFS 2.0 (or any other STS) can implement many different rules that might potentially result to the same claim leading to similar authorization decisions in your service or application (line-breaks for readability, only!!):</p>  <blockquote>   <pre><font face="Lucida Console">IClaimsIdentity MyId = User.Identity as IClaimsIdentity;
var MyClaim = MyId.Claims.FirstOrDefault(<br />        c =&gt; c.ClaimType == &quot;http://mycustomclaims/masterclaim&quot;);
if (MyClaim != null)
{</font><br /><font face="Lucida Console">&#160;&#160;&#160;&#160; if (MyClaim.Value.Equals(&quot;true&quot;))</font><font face="Lucida Console"><br /></font><font face="Lucida Console">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ViewBag.Message = &quot;You have advanced permissions based on <br />                           the http://mycustomclaim/masterclaim value!&quot;;<br />&#160;&#160;&#160;&#160; else<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ViewBag.Message = &quot;NO advanced permissions based on the <br />                           http://mycustomclaim/masterclaim value!&quot;;<br />}
else
{&#160;&#160;&#160;&#160; ViewBag.Message = &quot;Limited permissions due to NO <br />                       http://mycustomclaim/masterclaim at all!&quot;;
}</font></pre>
</blockquote>

<p align="left"><strong>Single-Sign-On is easy and the primary scenario as of today, Single-Log-Off seems to be easy but it isn't:</strong></p>

<p align="left">From all the claims-based scenarios web single sign on is the scenario I've seen most often. Implementing SSO with technologies and frameworks such as ADFS 2.0, WIF, Sun/Oracle Metro, Ping Identity Server and the like is really easy. As outlined in my presentation many of the classic browser-based principles such as authentication cookies still apply and are used effectively to implement SSO. The approach is similar to what most of you experience from well-known providers such as Windows Live ID or Google ID:</p>

<ul>
  <li>
    <div align="left">When a user browses to a web site it redirects to the STS/IdP if it does not have its own authentication cookie, yet.</div>
  </li>

  <li>
    <div align="left">The IdP executes the login-process and if successful does two things:</div>

    <ul>
      <li>
        <div align="left">First it issues it's own authentication cookie (typically non-persistent, but that's up to the STS)</div>
      </li>

      <li>
        <div align="left">Second it responds with a HTML form containing the SAML token for the web site and a JavaScript that posts the SAML token to the target web site it has been issued for.</div>
      </li>
    </ul>
  </li>

  <li>
    <div align="left">The target web site receives the SAML token and if valid issues its own authentication cookie.</div>
  </li>

  <li>
    <div align="left">When the user navigates to the next web site trusting the same IdP/STS, the same process happens for this web site.</div>
  </li>
</ul>

<p align="left">Given this for every web site including the IdP/STS the browser will have authentication cookies in its cache. If the user signs-out, all of them need to be deleted from the browser cache to be sure that the user is really signed out from all applications he visited. In WIF you can issue such a federated sign-out in your code with the following API calls:</p>

<blockquote>
  <pre><font face="Lucida Console">var FedAuthModule = <br />       FederatedAuthentication.WSFederationAuthenticationModule;
var FedSignOutUrl = <br />       WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FedAuthModule.Issuer,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FedAuthModule.Reply,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; null<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; );<br /> 
var SessionAuthModule = FederatedAuthentication.SessionAuthenticationModule;
SessionAuthModule.SignOut();
SessionAuthModule.DeleteSessionTokenCookie();
 
WSFederationAuthenticationModule.FederatedSignOut<br />&#160;&#160;&#160;&#160; (<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; new Uri(FedSignOutUrl),<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; new Uri(FedAuthModule.Realm + &quot;Home/About&quot;)<br />&#160;&#160;&#160;&#160; );</font></pre>
</blockquote>

<p align="left">This code will erase the web applications own cookie as well as start a federated sign out to the original IdP/STS to start erasing other web site's cookies as well. ADFS 2.0 will do this by embedding iframe-constructs into the response so that the browser performs a sign-out with all web sites visited as part of a browser session. If for some reason someone manages to interrupt this process and the user leaves the machine he might not be signed out from all web sites. That might potentially give users which are subsequently accessing the same machine access to web sites visited by the previous users if authentication cookies are not expired, yet.</p>

<p align="left">This browser-based SLO (Single Logout) is one possible option and the only option supported by ADFS 2.0 as of today. The reason - at least from my understanding - is that the WS-Federation protocol which is used for browser-based SSO and claims-security does not define other mechanisms. SAML protocol offers a second option through SOAP-calls performed by the STS/IdP to relying parties to ensure the sign-out. This is way more complex, not supported by ADFS 2.0 and WIF at all but definitely more secure.</p>

<p align="left">The bottom line is: SLO (Single Logout) is a hard topic and even in the standards many part are still open. In practice many organizations therefore go a &quot;compromise&quot; between using browser-based SLO as described above and using cookies with sliding expirations having a low time-interval. But of course that solution does not work always... sometimes you just have to take the hard way and implement what's not implemented by many products and technologies, yet.</p>

<p align="left"><strong>SharePoint 2010 and Claims - Portal SSO and BCS/WCF Integration as the primary scenarios:</strong></p>

<p align="left">Starting with SharePoint 2010 the product comes with integrated support for claims-based and federated security. It ships with its own STS that is used as the primary point-of-authentication for its own web sites and services. SharePoint is a complex beast - and claims-security does not make the complex beast simpler! Indeed the opposite is true in my opinion. So if possible I'd reduce the scenarios to the following - and even those will be hard enough (although the benefits with SSO are clear, of course):</p>

<ul>
  <li>
    <div align="left">Single-Sign-On in interoperable portal solutions: if you need to integrate SharePoint with other portals based on interoperable standards, then federation is a good approach. I wouldn't do it just for your Intranet applications, especially if you have AD in place, as it just makes things a bit harder. But for SSO in heterogeneous environments it's the way to go.</div>
  </li>

  <li>
    <div align="left">Integration of SharePoint with backend services through business connectivity services - also in heterogeneous environments. BCS then would request tokens through it's SharePoint STS which in turn might request tokens from trusted STS for services. In such a case you can decouple your services from SharePoint and establish a common, normalized authorization model through claims for your services while still being able to integrate them with SharePoint. That's definitely worth it!</div>
  </li>
</ul>

<p align="left"><strong>Exchange 2010, OWA and Claims-Security: Portal SSO is the only valid reason in my opinion:</strong></p>

<p align="left">If you don't need to implement SSO with other web sites through in heterogeneous environments, I don't see value in undergoing the steps of using SAML and claims with Exchange 2010 and OWA as of today. My reason for that: claims are not supported and the path you need to go with the Claims-to-Windows-Token-Service (C2WTS), AD Constraint Delegation and still having the AD dependency is a big effort for little value.</p>

<p align="left">As mentioned - a valid scenario is the seamless integration of OWA incl. SSO and SLO inside of portals that do use claims and federation. And that was exactly a scenario I was involved in. Of course I'll change my opinion as soon as Exchange 2010 supports claims out-of-the-box without any workarounds. As of today the basic steps for enabling OWA to use claims are:</p>

<ul>
  <li>
    <div align="left">Enable the WIF Claims-to-Windows-Token-Service (C2WTS) on the machine that runs OWA. The C2WTS translates SAML tokes containing a UPN claim to Windows accounts of your AD. That said the C2WTS needs a high level of privileges as outlined below!</div>
  </li>

  <li>
    <div align="left">The machine that runs OWA and the account used for the C2WTS must be enabled for Kerberos Constraint delegation using the &quot;any authentication protocol&quot; and &quot;specific services&quot; option. You need to specify all Exchange services of the exchange server as valid targets for constraint delegation.</div>
  </li>

  <li>
    <div align="left">After that you need to configure client access in the Exchange management console to use NO authentication method from the pre-defined authentication methods.</div>
  </li>

  <li>
    <div align="left">Then you can configure WIF in your OWA application. But again that can get tricky as well. You need to ensure the following aspects (high-level):</div>

    <ul>
      <li>
        <div align="left">In case of IIS 7.x integrated pipeline mode all http-modules must be configured for preCondition=&quot;managedHandler&quot; to ensure they do not run before the WIF modules run.</div>
      </li>

      <li>
        <div align="left">The order of the modules must be defined in a way that WIF modules run before any other modules. This is to ensure that the SAML token is translated to a Windows token through the C2WTS, already.</div>
      </li>

      <li>
        <div align="left">The &quot;ASPX&quot;-page-handler MUST be enabled and it MUST accept both, GET and POST requests. Especially in the Exchange Control Panel (ECP) web application POST for the ASPX handler is disabled which is what you need to change to make it work with WIF.</div>
      </li>

      <li>
        <div align="left">To be able to query FederationMetadata.xml documents you need to include the mime-type for XML-files in your system.webServer configuration if removed in the default Exchange configuration (again for the ECP panel that's needed).</div>
      </li>

      <li>
        <div align="left">I'd recommend to not use fedutil.exe when configuring OWA for WIF as fedutil.exe might destroy parts of your web.config configuration from your Exchange installation. So manual configuration - at least for production environments - is your friend.</div>
      </li>
    </ul>
  </li>
</ul>

<p align="left"><strong>Summary, Wrap-Up:</strong></p>

<p align="left">As a concept claims-based security is closer to how we are dealing with security in the real world - and that makes it so powerful in my opinion. Authorization based on simple attributes issued by a trusted issuer is what we're all used to. E.g. the conference badge that permits me to get into the sessions of a conference and the color of the badge's band which permits me to get into the speaker lounge or not depending on the color.</p>

<p align="left">Claims-based and federated security is <strong>the </strong>future in the authentication (and authorization) space. What happens to .NET 4.5 in this area shows that more than anything (please look at <a href="http://www.leastprivilege.com">Dominick Baier's</a> talk from Basta Spring 2012). Looking at the session <a href="https://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-422T">&quot;Using claims-based access control for compliance and information governance&quot;</a> from BUILD 2011 you'll also note the deeper integration of the concepts in Win8 and .NET 4.5.</p>

<p align="left">But as of today I strongly recommend you never ever underestimate the path to claims-based security. With my previous customer I've been working on this path for 2 years. Although we made progress it was truly painful training developers who are bound to traditional security or to Windows-only security (where most of the people literally don't care about authentication because the operating system does).</p>

<p align="left"><strong>My final advice:</strong></p>

<p align="left">Plan your path to claims-based security carefully and start planning it today! You will need it for a variety of scenarios starting from more effective cross-company integration as we all know it to cloud-based solutions or hybrid solutions (as outlined in my previous blog postings). Claims are rapidly getting more and more important, already, and you should speed up your teams early enough to be ready when you need to be!</p>]]></content:encoded>
    </item>
  </channel>
</rss>