<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>mszCool's thoughts and cents revealed : Presentations - Demos - Samples</title><link>http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx</link><description>Tags: Presentations - Demos - Samples</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows Azure Tokens and Step-By-Step Guide for Austrian Customers</title><link>http://blogs.msdn.com/mszcool/archive/2009/12/15/windows-azure-tokens-and-step-by-step-guide-for-austrian-customers.aspx</link><pubDate>Tue, 15 Dec 2009 18:11:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937178</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9937178.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9937178</wfw:commentRss><description>&lt;p&gt;Finally the last few hours I’ve been working on a (German) step-by-step guide for deploying applications to Windows Azure CTP.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For Austrian customers we are offering the last available tokens to enable last possible &amp;quot;free access&amp;quot; to Windows Azure before on January 4th commercial operation starts.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/post/2009/12/15/Windows-Azure-Token-Keys-zu-vergeben-e28093-jetzt-noch-bis-Janner-testen-e28093-ohne-zu-zahlen!.aspx"&gt;Read here how to get your free token (if you are an Austrian customer, only!!!)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/post/2009/12/15/Windows-Azure-e28093-Letzter-Step-by-Step-Guide-um-mit-den-letzten-frei-verfugbaren-Tokens-eine-Anwendung-auf-die-Windows-Azure-CTP-zu-bringen.aspx"&gt;Check-out my step-by-step guide on codefest.at to learn, how-to deploy your first application to Azure!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Merry Christmas and a Happy new Year (the first one:))!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937178" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Hints+and+Tricks/default.aspx">Hints and Tricks</category></item><item><title>ARC305 Downloads – My Session @ TechEd Europe in Berlin on “Always Responsive Apps &amp; Services”</title><link>http://blogs.msdn.com/mszcool/archive/2009/11/11/arc305-downloads-my-session-teched-europe-in-berlin-on-always-responsive-apps-services.aspx</link><pubDate>Wed, 11 Nov 2009 15:46:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9920857</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9920857.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9920857</wfw:commentRss><description>&lt;p&gt;Right before my session is going to start here in Berlin at 5.30 p.m. I found time to upload my demos and slides. The session is all about approaches and thoughts we implemented in a project together &lt;strong&gt;with &lt;a href="http://www.frequentis.com"&gt;Frequentis AG&lt;/a&gt;&lt;/strong&gt;, a globally active ISV building solutions for public safety. These solutions span air traffic control, maritime communications, police- and fire-department control and communication etc.&lt;/p&gt;  &lt;p&gt;All the approaches and information from the session is from a whitepaper I’ve published earlier and I’ve created together with architects from Frequentis.&lt;/p&gt;  &lt;p&gt;I’ve published the PoC which is the demo-solution I use for the session earlier, but for TechEd I &lt;strong&gt;updated the PoC&lt;/strong&gt; the whole solution &lt;strong&gt;to Visual Studio 2010 Beta 2&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091111_AsyncTaskScenario_VS2010b2.zip"&gt;Click here to download the Proof-of-Concept demo app (VS2010 b2).&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091111_ARC305_TechEd_Europe.pdf"&gt;Click here to download a PDF of my presentation.&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/mszcool/archive/2009/04/15/whitepaper-always-responsive-clients-and-services-with-wpf-and-wcf-frequentis-ag-tracking-tracing-logbook-for-maritime-communications.aspx"&gt;Click here to get to the whitepaper we’ve published with Frequentis.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Important Notes for testing&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you want to test the PoC you need the following bits installed on your machine:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=dc333ac8-596d-41e3-ba6c-84264e761b81"&gt;Visual Studio 2010 Beta 2&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/ccrdss/"&gt;Microsoft CCR and DSS Runtime Toolkit&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=01af61e6-2f63-4291-bcad-fd500f6027ff"&gt;SQL Server Express Edition (DB-scripts included in the PoC download)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you don’t have Microsoft CCR installed, then you can &lt;strong&gt;remove the CcrManager.cs class&lt;/strong&gt; in the &lt;strong&gt;AsyncDemo.JobLibrary project&lt;/strong&gt; in the &lt;strong&gt;Shared&lt;/strong&gt;-folder of the solution. Furthermore you need to &lt;strong&gt;remove the references to the Microsoft.Ccr.*.dll&lt;/strong&gt; assemblies.&lt;/p&gt;  &lt;p&gt;Have much fun, I hope you enjoy(ed) my session:)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920857" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>Identity Interop Update for our Interoperability Council: ADFS v2 and WIF Interop with Sun OpenSSO, Novell Access Manager, CA, OpenID and Sun Metro / WSIT</title><link>http://blogs.msdn.com/mszcool/archive/2009/11/05/identity-interop-update-for-our-interoperability-council-adfs-v2-and-wif-interop-with-sun-opensso-novell-access-manager-ca-openid-and-sun-metro-wsit.aspx</link><pubDate>Thu, 05 Nov 2009 13:30:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917974</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9917974.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9917974</wfw:commentRss><description>&lt;p&gt;As today we’re going to host our 3rd Microsoft Austria Interoperability Council, I thought that in addition to our existing results we’re presenting today, it’s a good time to publish an update of my &lt;strong&gt;Identity Interoperability Demos and samples&lt;/strong&gt; I created earlier this year.&lt;/p&gt;  &lt;p&gt;Furthermore, &lt;strong&gt;based on the feedback of members from our interop-council&lt;/strong&gt;, I’d like to provide a few links with more information on Identity Interoperability between Microsoft Windows Identity Framework (WIF) and Active Directory Federation Services v2 (ADFS v2- both formerly codenamed Geneva Framework and Geneva Server).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;The Foundation – OASIS Identity Metasystem&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Primarily the foundation for all these interoperability thoughts is the Identity Metasystem vision originally started by &lt;a href="http://identityblog.com/" target="_blank"&gt;Kim Cameron&lt;/a&gt; (Microsoft – &lt;a href="http://msdn.microsoft.com/en-us/library/ms996422.aspx" target="_blank"&gt;see article on MSDN&lt;/a&gt;). More information on the official standards can be found on the following link:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a title="http://docs.oasis-open.org/imi/identity/v1.0/identity.html" href="http://docs.oasis-open.org/imi/identity/v1.0/identity.html"&gt;http://docs.oasis-open.org/imi/identity/v1.0/identity.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Sun Metro / WSIT Interoperability&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The interop-identity PoC I’ve created demonstrates interoperability with Sun Metro / Web Services Interoperability Toolkit. For the PoC you need a Glassfish v2 application sever to host a Java-based Relying Party and integrate this RP with a .NET-based Security-Token-Service (STS) and a .NET-based client. The PoC shows, how you can integrate Java-based services in a Windows-based security-infrastructure based on standards.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091105_Identity_Interop_Geneva_Beta2.zip" target="_blank"&gt;Click here to download the lates version of my ID-Interop-PoC&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/mszcool/archive/2009/01/23/identity-interoperability-geneva-beta-1-sts-with-net-client-and-netbeans-6-5-metro-1-3-wsit-java-client-working-again.aspx" target="_blank"&gt;Click here to view my previous blog-entry on how-to setup the PoC&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note, that the download package is a little big larger this time. You don’t need to download any additional bits. Everything including all Java-Pre-Requisites is included, except Microsoft Geneva Beta 2 (&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=118c3588-9070-426a-b655-6cec0a92c10b" target="_blank"&gt;click here to download&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Interoperability with CA, Novell Access Manager, Sun Open SSO&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;While working with colleagues (Michael Steinböck, Dominik Paiha from Microsoft) on a proposal for a customer (who is also a member of the council) on identity interoperability, we’ve collected a number of additional resources on identity interoperability. First and foremost I would like to mention papers on interop between Sun Open SSO, Novell Access Manager and CA.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=9eb1f3c7-84da-40eb-b9aa-44724c98e026#filelist" target="_blank"&gt;Click here to download Interop-Whitepapers for ADFS v2 (Geneva)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;OpenID Interoperability with Microsoft ADFS v2 and WIF&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Also a question continuously asked is the interoperability between the Microsoft-platform and OpenID. Of course OpenID can be used as a means of authentication on top of a WIF/ADFSv2-based STS.&lt;/p&gt;  &lt;p&gt;Thanks to &lt;strong&gt;Matias Woloski&lt;/strong&gt; who is working very close with Microsoft’s patterns &amp;amp; practices team, you can find more information and a conceptual view below (click image to enlarge):&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.southworks.net/mwoloski/2009/07/14/openid-ws-fed-protocol-transition-sts/" target="_blank"&gt;Click to read Matias’ blog entry on OpenID integration&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://dotnetopenauth.net:8000/" target="_blank"&gt;Click to get to DotNetOpenAuth, a library for .NET-OpenID-integration&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="https://www.ohloh.net/p/dotnetopenauth/download?package=DotNetOpenAuth&amp;amp;release=3.2.2" target="_blank"&gt;Download .NET Open Auth here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091105_OpenIDInterop.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="20091105_OpenIDInterop[1]" border="0" alt="20091105_OpenIDInterop[1]" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteropUpdateforourInteroperabil_C26B/20091105_OpenIDInterop%5B1%5D_3.jpg" width="423" height="326" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Novell Bandit Project provides Information-Card Interoperability&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteropUpdateforourInteroperabil_C26B/bandit-logo_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="bandit-logo" border="0" alt="bandit-logo" align="right" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteropUpdateforourInteroperabil_C26B/bandit-logo_thumb.gif" width="73" height="70" /&gt;&lt;/a&gt; In partnership with Microsoft, Novell is working on an initiative called “The Bandit Project”. This initative provides components and source code to implement a complete Identity Metasystem-based solution with STS, RP and even identity selectors (DigitalMe) for clients. To get these components to ensure complete interoperability of your Java- and browser-based components and end user experience on Linux, click the link below:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a title="http://www.bandit-project.org/" href="http://www.bandit-project.org/"&gt;http://www.bandit-project.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Identity Interoperability with IBM Tivoli&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At last year’s PDC 2008, &lt;a href="http://blogs.msdn.com/vbertocci" target="_blank"&gt;Vittorio Bertocci&lt;/a&gt; and &lt;a href="http://identityblog.com/" target="_blank"&gt;Kim Cameron&lt;/a&gt; demonstrated interoperability with IBM Tivoli access manager and ADFS v2 / Geneva Framework.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/vbertocci/archive/2008/10/28/identity-pdc08-roadmap-session-with-kim-cameron-himself-yours-truly.aspx" target="_blank"&gt;Take a look at Vittorio’s blog here for more details.&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://channel9.msdn.com/pdc2008/BB11/" target="_blank"&gt;Click to view the session, directly, and get the info from live-demos.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Interoperability between Shibboleth and ADFS&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Microsoft published a guide on interoperability between Shibboleth and the Microsoft platform for it’s previous version of Active Directory Federation Services, already. Of course this guide is still available.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0EBC0F18-C8F5-4699-AA36-5B6562448912&amp;amp;displaylang=en" target="_blank"&gt;Download Shibboleth – ADFS Interop here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With ADFS v2, Microsoft is implementing the SAML 2 protocol in addition to the WS-* protocols which are available in both, ADFS v2 and the Windows Identity Framework. Having that said, interoperability will be given for Shibboleth and ADFS v2, as well. I’ve found the following references on this interoperability and I’ll continue my search to find or build more concrete step-by-step guides and samples on this kind of interoperability:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://identity-des.com/2008/11/02/geneva-saml-interop-with-a-lot-of-help-from-our-friends/" target="_blank"&gt;Geneva and SAML 2 from Don Schmidt of the identity-team&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://identity-des.com/2008/10/28/microsoft-geneva-server-supports-saml-20/" target="_blank"&gt;SAML 2 protocol and Shibboleth Interop-Announcement&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;u&gt;Patterns &amp;amp; Practices Identity and Access Guide&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Finally I wanted to share one last, extremely important resource. My friend &lt;a href="http://blogs.msdn.com/eugeniop" target="_blank"&gt;Eugenio Pace&lt;/a&gt; from the Microsoft patterns and practices team in Redmond is currently working on a PnP-guide on identity and access management using ADFS v2 and WIF. This guide is currently under development and is published as a open project on &lt;a href="http://www.codeplex.com"&gt;www.codeplex.com&lt;/a&gt;. That means, feel free to start reading through the guide and provide the PnP team with feedback as much as you can and about all the things you would love to read there.&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;They are also working on a guidance on how-to implement BOTH, single-sign-on (&lt;/strong&gt;which is available out-of-the-box in Geneva&lt;strong&gt;) and single-sign-off, which is a very special challenge, typically!&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://claimsid.codeplex.com/" target="_blank"&gt;Click here to get to the guides workspace on codeplex.&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/eugeniop/" target="_blank"&gt;Click here to get to Eugenio’s blog.&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;u&gt;Final thoughts&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;I think, these are some of the most important pieces of information, architects and developers need when it comes to thinking about identity interoperability. I personally strongly believe in all the parts of the identity metasystem vision and claims-based security. I also see, that most of the vendors are (slowly) moving towards this direction with their products and offerings.&lt;/p&gt;  &lt;p align="left"&gt;So stay tuned, keep your eye on all these things.&lt;/p&gt;  &lt;p align="left"&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917974" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>Internet Explorer 8 – All-In-One-Demo for Web Slices, Accelerators and Open Search Integration</title><link>http://blogs.msdn.com/mszcool/archive/2009/10/30/internet-explorer-8-all-in-one-demo-for-web-slices-accelerators-and-open-search-integration.aspx</link><pubDate>Fri, 30 Oct 2009 17:23:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9915365</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9915365.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9915365</wfw:commentRss><description>&lt;p&gt;Today based on some customer project requirements, &lt;a href="http://www.knor.net/blog" target="_blank"&gt;Max&lt;/a&gt; and I together created a very simple and easy-to-understand &lt;strong&gt;all-in-one&lt;/strong&gt; demo to show, how-to integrate Internet Explorer 8 features into your own web sites.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091030_IE8Integration.zip" target="_blank"&gt;Download the sample web site here!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As for us the localization of the content for our local audience was core, we published the whole documentation in German on our local team-blog including detailed explanations and code-snippets.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.codefest.at/post/2009/10/30/Internet-Explorer-8-Integration-von-Web-Slices-Accelerators-und-Open-Search-in-Web-Pages-e28093-How-To!!.aspx" target="_blank"&gt;Take a look at the article in German on our team-blog here!&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Generally speaking, in my opinion these new little gimmicks in IE8 are pretty cool for end users and are more than easy to be integrated into your web pages... and they do not disturb any other browsers, at all. So for me that’s just a win-win-situation...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915365" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>Microsoft Office 2007 – Update Registration Info Tool for my Cousin…</title><link>http://blogs.msdn.com/mszcool/archive/2009/10/29/microsoft-office-2007-update-registration-info-tool-for-my-cousin.aspx</link><pubDate>Wed, 28 Oct 2009 22:11:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9914377</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9914377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9914377</wfw:commentRss><description>&lt;p&gt;My cousin wanted to update the registration-information specified while installing Microsoft Office 2007. When he asked me I realized, that for the default values of user name and the initials Office 2007 offers a UI – but it doesn’t provide a possibility to update the company name. Furthermore I realized, that PowerPoint reads the information from the Installer-Data registry-hive.&lt;/p&gt;  &lt;p&gt;So I created a little tool for him to update all registration information to have the right default values for Word, Excel and PowerPoint (haven’t tested with the other tools;)).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091028_OfficeProperties_Src.zip"&gt;Download the source code for the tool here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091028_OfficeProperties_bin.zip"&gt;Download the binary for executing the tool directly, here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I know, it’s not an architect’s job writing such little tools... but almost too often I love doing these little things:)) ... little fun stuff:))&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914377" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>DevCamp 2009 Conference – Key Note on Windows Azure with Step-By-Step Guide in Slides on how-to get your Azure Token!!</title><link>http://blogs.msdn.com/mszcool/archive/2009/10/15/devcamp-2009-conference-key-note-on-windows-azure-with-step-by-step-guide-in-slides-on-how-to-get-your-azure-token.aspx</link><pubDate>Thu, 15 Oct 2009 09:35:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907564</guid><dc:creator>mszCool</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9907564.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9907564</wfw:commentRss><description>&lt;p&gt;It was a great pleasure for me to be part of the opening key note at our 3rd &lt;a href="http://www.devcamp.at/"&gt;Developer Camp conference&lt;/a&gt; organized by some of our key partners in Austria (Techtalk, Cubido, CSS and Kentiko).&lt;/p&gt;  &lt;p&gt;During this key note we introduced the Windows Azure platform to about 170 developers. &lt;strong&gt;Note that I also have a detailed description baked into the slides including screen shots to show you, how you can get access tokens for Windows Azure to test out the platform before the billing starts after PDC this November.&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091013_DevCamp2009_KeyNote.zip"&gt;You can download the key note material incl. demos here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Below are the direct URLs for requesting tokens for Windows Azure and SQL Azure:&lt;/p&gt;  &lt;p&gt;Step 0: Register for Microsoft Connect if you haven’t done, yet    &lt;br /&gt;&lt;a title="https://connect.microsoft.com/profile.aspx" href="https://connect.microsoft.com/profile.aspx"&gt;https://connect.microsoft.com/profile.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 1: Fill out the sourvey “Register for Azure Services” on connect    &lt;br /&gt;&lt;a title="http://go.microsoft.com/fwlink/?LinkID=129453" href="http://go.microsoft.com/fwlink/?LinkID=129453"&gt;http://go.microsoft.com/fwlink/?LinkID=129453&lt;/a&gt;     &lt;br /&gt;Note that for each Live-ID you can fill-out the survey just one time.&lt;/p&gt;  &lt;p&gt;Step 2: Register for SQL Azure    &lt;br /&gt;&lt;a title="http://go.microsoft.com/fwlink/?LinkID=149681&amp;amp;clcid=0x09" href="http://go.microsoft.com/fwlink/?LinkID=149681&amp;amp;clcid=0x09"&gt;http://go.microsoft.com/fwlink/?LinkID=149681&amp;amp;clcid=0x09&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 3: Usually it takes about 48 – 72 hours before you get the confirmation (depending on the interest of users it might take longer).&lt;/p&gt;  &lt;p&gt;Step 4: After you’ve received the keys, sign-in to Windows Azure   &lt;br /&gt;&lt;a title="http://lx.azure.microsoft.com/fs" href="http://lx.azure.microsoft.com/fs"&gt;http://lx.azure.microsoft.com/fs&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 5: Activate your Azure Account with the tokens by clicking on the account tab or navigate to it directly and enter your tokens:   &lt;br /&gt;&lt;a title="https://windows.azure.com/cloud/account.aspx" href="https://windows.azure.com/cloud/account.aspx"&gt;https://windows.azure.com/cloud/account.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 6: Activate Your SQL Azure Account with the token received by navigating to the SQL Azure homepage   &lt;br /&gt;&lt;a title="https://sql.azure.com/InvitationCode.aspx" href="https://sql.azure.com/InvitationCode.aspx"&gt;https://sql.azure.com/InvitationCode.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907564" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>ASP.NET MVC Demo Application – Austrian Re-MIX Conference from October 1st 2009 – Updating (complex) object hierarchies using ModelBinder</title><link>http://blogs.msdn.com/mszcool/archive/2009/10/02/asp-net-mvc-demo-application-austrian-re-mix-conference-from-october-1st-2009-updating-complex-object-hierarchies-using-modelbinder.aspx</link><pubDate>Fri, 02 Oct 2009 19:17:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902426</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9902426.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9902426</wfw:commentRss><description>&lt;p&gt;Yesterday we had our Austrian version of the Re-MIX conference in the Hilton Hotel at Stadtpark in Vienna. It was a great conference combined with a superb architect forum together with Simon Guest, who unveiled his thoughts on cloud computing… but more on that in a separate post, this one is about the ASP.NET MVC session I delivered in the late afternoon in the web dev track!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;An ASP.NET MVC Walkthrough &amp;amp; Updating object hierarchies…&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In my session “Introducing the ASP.NET MVC Web Development Framework” inspired by &lt;a href="http://haacked.com/"&gt;Phil Haack’s&lt;/a&gt; session at the last MIX-conference I demonstrated, what development with the ASP.NET MVC framework looks like.&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091001-RemixDemoApp.zip"&gt;Download the sample here&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091001-Remix_ASPNET_MVC_Session.pptx"&gt;Download the slides here&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the session I created a simple application for displaying, modifying and adding events with event deliveries, from scratch. The following graphic shows the entity data model we’ve been working with:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/ASP.NETMVCDemoApplicationAustrianReMIXCo_FBA7/image_2.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.msdn.com/blogfiles/mszcool/WindowsLiveWriter/ASP.NETMVCDemoApplicationAustrianReMIXCo_FBA7/image_thumb.png" width="421" height="252" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see, a single Event has multiple deliveries at different locations. While implementing the controller actions for adding new events and modifying existing events I was challenged by the question, “how the model binder updates object hierarchies”. And the point is – it doesn’t, automatically…&lt;/p&gt;  &lt;p&gt;Based on &lt;a href="http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx"&gt;Phil Haack’s tip on binding collections on his blog&lt;/a&gt; and based on &lt;a href="http://goneale.com/2009/07/27/updating-multiple-child-objects-and-or-collections-in-asp-net-mvc-views/"&gt;a posting from Graham O’Neale here&lt;/a&gt; I completed my idea in this example. Below are the steps for combining the concepts from the previously mentioned blog entries:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1.) In my views for Editing and Adding events, add HTML and script - a table that will be dynamically expanded with new items through JavaScript for each new child-item I want to create (event delivery in my case – the parts in red are the important ones in the view):&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;lt;fieldset&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;legend&amp;gt;Fields&amp;lt;/legend&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;p&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;label for=&amp;quot;Title&amp;quot;&amp;gt;Title:&amp;lt;/label&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= Html.TextBox(&amp;quot;Title&amp;quot;) %&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= Html.ValidationMessage(&amp;quot;Title&amp;quot;, &amp;quot;*&amp;quot;) %&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/p&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;p&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;label for=&amp;quot;Description&amp;quot;&amp;gt;Description:&amp;lt;/label&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= Html.TextBox(&amp;quot;Description&amp;quot;) %&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= Html.ValidationMessage(&amp;quot;Description&amp;quot;, &amp;quot;*&amp;quot;) %&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/p&amp;gt;      &lt;br /&gt;&amp;lt;/fieldset&amp;gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;lt;table id=&amp;quot;DeliveryTable&amp;quot;&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;tr&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;th&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; Delivery Begin Date            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/th&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;th&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; Delivery End Date            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/th&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/tr&amp;gt;            &lt;br /&gt;&amp;lt;/table&amp;gt;&lt;/font&gt;&lt;/strong&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;lt;p&amp;gt;     &lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;Add Delivery&amp;quot;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;onclick=&amp;quot;javascript:AddDelivery()&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/strong&gt; &amp;lt;br /&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Create&amp;quot; /&amp;gt;        &lt;br /&gt;&amp;lt;/p&amp;gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;strong&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot;&amp;gt; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;strong&gt;function AddDelivery() { &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160; // Add a row to the table       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var DeliveryTableBody =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.getElementById&lt;/font&gt;&lt;/strong&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;strong&gt;(       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;DeliveryTable&amp;quot;).getElementsByTagName(        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;tbody&amp;quot;).item(0);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var ItemCount =         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DeliveryTableBody.childNodes.length - 1; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; var newChild = document.createElement(&amp;quot;tr&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var col1 = document.createElement(&amp;quot;td&amp;quot;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; col1.innerHTML =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;&amp;lt;input type='text'&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; name='Event.Deliveries[&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + ItemCount + &amp;quot;].BeginDate' /&amp;gt;&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var col2 = document.createElement(&amp;quot;td&amp;quot;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; col2.innerHTML = &amp;quot;&amp;lt;input type='text'&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; name='Event.Deliveries[&amp;quot; + ItemCount +&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;].EndDate' /&amp;gt;&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; newChild.appendChild(col1);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; newChild.appendChild(col2);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DeliveryTableBody.appendChild(newChild);        &lt;br /&gt;} &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;strong&gt;&amp;lt;/script&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2.) In my action method for adding events in the EventController I simply was required to update the signature of the action-method with the Form-postback-collection and a separate call to update model as shown below:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;[Authorize]     &lt;br /&gt;[AcceptVerbs(HttpVerbs.Post)]      &lt;br /&gt;public ActionResult Add(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [Bind(Exclude=&amp;quot;EventId&amp;quot;)] Event ev, &lt;/font&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;       &lt;br /&gt;&lt;font size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FormCollection postValues&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;font size="2" face="Consolas"&gt;)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Validate incoming stuff      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (string.IsNullOrEmpty(ev.Title))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ModelState.AddModelError(&amp;quot;Title&amp;quot;,       &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;Title cannot be empty!&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (string.IsNullOrEmpty(ev.Description))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ModelState.AddModelError(&amp;quot;Description&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Please enter a description for your event!&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Validation succeeded?       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // If yes, add the event, otherwise       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // return to the view      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (ModelState.IsValid)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataContext.AddToEvent(ev);      &lt;br /&gt;&amp;#160;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UpdateModel&amp;lt;IEnumerable&amp;lt;EventDelivery&amp;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; ev.Deliveries, &amp;quot;Event.Deliveries&amp;quot;);            &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataContext.SaveChanges(); &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return RedirectToAction(&amp;quot;Index&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return View();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3.) When modifying existing items, the whole thing gets more tricky when working with the ADO.NET Entity Framework. Why? Simply because the ASP.NET MVC default model binder, when updating collections, unfortunately clears them and re-fills them with the items posted back in the Form postback-collection. That breaks the ADO.NET Entity Framework association set (the ASP.NET MVC model binder does not know about associations). Now you have two possibilities, either modify the source code of ASP.NET MVC (if possible I would stay with the thing as it gets delivered) or apply a little trick as I did. I just created a temporary Event, filled it from scratch with the postback-parameters and then copied the values to the existing and to new items as below. Of course the whole thing needs refinement (especially when mapping to existing items in collections), but I think it’s at least a starting point!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;[Authorize]     &lt;br /&gt;[AcceptVerbs(HttpVerbs.Post)]      &lt;br /&gt;public ActionResult Edit(int eventId,       &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;FormCollection postValues&lt;/font&gt;&lt;/strong&gt;)        &lt;br /&gt;{        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Event CurrentEvent =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (from e in DataContext.Event.Include(&amp;quot;Deliveries&amp;quot;)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where e.EventId == eventId        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select e).FirstOrDefault(); &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160; if (CurrentEvent != null)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Event Temp = new Event();           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UpdateModel(Temp, &amp;quot;Event&amp;quot;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new string[] { &amp;quot;Title&amp;quot;,             &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Description&amp;quot; });            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UpdateModel(Temp.Deliveries,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Event.Deliveries&amp;quot;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new string[] { &amp;quot;BeginDate&amp;quot;,             &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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;EndDate&amp;quot; });            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CopyEvent(CurrentEvent, Temp);&lt;/font&gt;&lt;/strong&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataContext.SaveChanges(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return RedirectToAction(&amp;quot;Index&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ModelState.AddModelError(&amp;quot;General&amp;quot;, &amp;quot;...&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return View();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I hope that’s a helpful posting for anyone who’s facing the same challenges when working with MVC:) Nevertheless, for those who want to have full control over HTML and want to have better testing possibilities, this framework is the right choice. If you’re rather the “productivity-kind-of-developer”, sticking with web forms might be the more convenient solution...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902426" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Hints+and+Tricks/default.aspx">Hints and Tricks</category></item><item><title>Presentation at Microsoft TechReady in the US on Always Responsive Applications and Services with samples using CCR (Concurrency and Coordination Runtime) as well as .NET 4.0 Task Parallel Library</title><link>http://blogs.msdn.com/mszcool/archive/2009/07/31/presentation-at-microsoft-techready-in-the-us-on-always-responsive-applications-and-services-with-samples-using-ccr-concurrency-and-coordination-runtime-as-well-as-net-4-0-task-parallel-library.aspx</link><pubDate>Fri, 31 Jul 2009 02:00:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9853840</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9853840.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9853840</wfw:commentRss><description>&lt;p&gt;Today in the morning I gave a presentation at Microsoft’s largest internal conference for employees in Seattle, WA (called TechReady, about 5000-6000 Micorsoft employees are there on technical education).&lt;/p&gt;  &lt;p&gt;The presentation I gave is essentially based on the whitepaper I’ve written and we’ve published a few weeks ago together with Frequenits AG on always responsive and scalable apps and services. You can find &lt;strong&gt;&lt;u&gt;&lt;a href="http://blogs.msdn.com/mszcool/archive/2009/04/15/whitepaper-always-responsive-clients-and-services-with-wpf-and-wcf-frequentis-ag-tracking-tracing-logbook-for-maritime-communications.aspx" target="_blank"&gt;more details as well as the paper for download here&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;While the presentation is strictly confidential, I can publish the demo scenarios. Therefore click the link below if you are interested in a complete scenario that shows asynchronous processing within clients and services as well as across services… of course I do not cover all possible “exceptions”, but it’s a starting point.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20090730-AsyncTaskScenario-VS2010b1.zip" target="_blank"&gt;&lt;strong&gt;Click here to download the demo&lt;/strong&gt;&lt;/a&gt;    &lt;br /&gt;(for Visual Studio 2010 Beta 1, only, I will provide a VS 2008 version with CCR-only implementations soon)&lt;/p&gt;  &lt;p&gt;The demo scenario supports a few arguments discussed in my whitepaper as well as the presentation:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Performance comparison between Peer-2-Peer and Service-bus based communication metaphors.&lt;/li&gt;    &lt;li&gt;Base classes for implementing the Command/Job/Queue patterns discussed in the whitepaper.&lt;/li&gt;    &lt;li&gt;And finally – a mapping of these patterns to .NET Framework technologies that definitely help implementing the patterns themselves. I include two implementations, one that uses the &lt;strong&gt;Concurrency and Coordination Runtime&lt;/strong&gt; from the Microsoft Robotics Studio and another one that uses the &lt;strong&gt;.NET Framework Task Parallel Library&lt;/strong&gt; that we are going to publish with the .NET Framework 4.0. To switch between those two implementations, just modify the JobManagerFactory in the AsyncDemo.JobLibrary project to use one or the other implementation.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The project with Frequentis definitely showed me, that Asynchronous programming and thinking is not just for the sake of performance, it’s also for “responsiveness” and “availability”. The neat thing is, that simply by keeping a few things in mind, these things can go hand-in-hand. &lt;/p&gt;  &lt;p&gt;Nevertheless, it was very special for me delivering this session at TechReady. Seven years ago, right before I started working for Microsoft in October 2002, Seattle was the place where I attended the first Microsoft conference of my life (and the first conference in the US, at all). And it was in the very same location as TechReady this year – in the Washington State and Convention Center, in the Sheraton Hotel and Hyatt Hotel in Seattle.&lt;/p&gt;  &lt;p&gt;My session was in one of the Grand Ball Rooms in the Sheraton with about 100 attendees… and back in August 2002 I had my room in the Sheraton at the Windows .NET Server 2003 conference… at that time I would have never thought that I will hold a session in the same location at any time:) So this was special for me! And I hope it was not for the last time!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9853840" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Whitepapers+-+Publications/default.aspx">Whitepapers - Publications</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>.NET Web Developers Road Show – ASP.NET, ASP.NET AJAX and Silverlight 3 in Action… Now Done and we’re back in the Office…</title><link>http://blogs.msdn.com/mszcool/archive/2009/04/30/net-web-developers-road-show-asp-net-asp-net-ajax-and-silverlight-3-in-action-now-done-and-we-re-back-in-the-office.aspx</link><pubDate>Thu, 30 Apr 2009 11:28:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9579170</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9579170.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9579170</wfw:commentRss><description>&lt;p&gt;Yesterday &lt;a href="http://www.knor.net/blog" target="_blank"&gt;Max&lt;/a&gt; and I had the last delivery of our .NET Web Developers Road Show. Again we applied our new concept of building a complete application in a whole day. This time we built the event management application using...&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;a data access layer with the ADO.NET Entity Framework&lt;/li&gt;    &lt;li&gt;an ADO.NET Data Service for making the data available filtered through some simple business rules.&lt;/li&gt;    &lt;li&gt;ASP.NET for the web front facing application that allows users to search and register for events incl. ASP.NET AJAX.&lt;/li&gt;    &lt;li&gt;Silverlight for two separate use cases:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;a little Events-Photos RIA integrated into the ASP.NET web site&lt;/li&gt;      &lt;li&gt;and a full Silverlight application for viewing event statistics and timelines.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/9aac566c1cd.NETWebDevelopersRoadShowDone_8F93/WebStartupEvents_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WebStartupEvents" border="0" alt="WebStartupEvents" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/9aac566c1cd.NETWebDevelopersRoadShowDone_8F93/WebStartupEvents_thumb.jpg" width="398" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Again it was a great pleasure travelling with Max through our country and delivering these sessions together. You can download the complete solution from Codeplex at &lt;/p&gt;  &lt;p&gt;&lt;a title="http://webdevroadshow.codeplex.com/" href="http://webdevroadshow.codeplex.com/"&gt;http://webdevroadshow.codeplex.com/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;including the source-code and the presentation material. Interesting that the presentation is much larger than the source code although we spend most of the time during the events in Visual Studio typing code:)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/9aac566c1cd.NETWebDevelopersRoadShowDone_8F93/image_2.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.msdn.com/blogfiles/mszcool/WindowsLiveWriter/9aac566c1cd.NETWebDevelopersRoadShowDone_8F93/image_thumb.png" width="408" height="343" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Have much fun with trying the application and analyzing the source code... but also note that this is a demo application, only, where we made some drawbacks and simplifications in the architecture, of course.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9579170" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>BigDays 2009 - Presentations and Demos Downloads</title><link>http://blogs.msdn.com/mszcool/archive/2009/04/01/bigdays-2009-presentations-and-demos-downloads.aspx</link><pubDate>Wed, 01 Apr 2009 14:51:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9526319</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9526319.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9526319</wfw:commentRss><description>&lt;p&gt;Yesterday we had the last delivery of our BigDays road show for 2009. It was a pleasure participating for me being a part of this largest road show through Austria, again.&lt;/p&gt; &lt;p&gt;This year I delivered two sessions, one on &lt;strong&gt;Windows Communication Foundation&lt;/strong&gt; and one on &lt;strong&gt;ASP.NET web development&lt;/strong&gt; (the second one together with Alex Duggleby from &lt;a href="http://www.securityresearch.at"&gt;Security Research&lt;/a&gt;). The presentations are available for download under the following two links:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://cid-c57a431d03937fc0.skydrive.live.com/self.aspx/.Public/200903%20BigDays%202009/Track3%7C_Session2%7C_WCF.pdf"&gt;Session on Windows Communication Foundation&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://cid-c57a431d03937fc0.skydrive.live.com/self.aspx/.Public/200903%20BigDays%202009/Track3%7C_Session3%7C_ASPNET.pdf"&gt;Session on ASP.NET Web Development&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Both sessions were part of an idea Max and I had on developing a complete scenario demo application through all sessions of the track. &lt;/p&gt; &lt;p&gt;Btw. Max delivered great sessions in all developer tracks around the conference - for details &lt;a href="http://blogs.msdn.com/knom/archive/2009/03/22/slides-and-demos-from-bigdays-2009-are-online.aspx"&gt;take a look at his blog entry;)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Rent-A-Worker Demo Application&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The demo-scenario application was the Rent-A-Worker demo application. We published the whole application as an open-source project on codeplex:&lt;/p&gt; &lt;p&gt;&lt;a href="http://bigdays09.codeplex.com/"&gt;Click here to get to the Rent-A-Worker project!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It is supposed to be used for finding workers and machines and renting them for your own building projects. The application was architecturally built with the following layers in mind. Each session in the track was dedicated to a single layer of the application:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/BigDays2009PresentationsandDemosDownload_BC7D/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/BigDays2009PresentationsandDemosDownload_BC7D/image_thumb_1.png" width="453" height="210"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Which technologies did we use for implementing Rent-A-Worker?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This year's BigDays were - based on the feedback from customers last year - focused towards &lt;strong&gt;released technologies&lt;/strong&gt; and not any future technologies. Therefore we built our demo scenario with .NET Framework 3.5 Service Pack 1 in all layers (released in 2008). Below you find the technologies incl. links to downloads for the pre-requisites you need to run, test and extend the Rent-A-Worker demo application:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/try/trial-software.mspx"&gt;Visual Studio 2008 Professional Edition or higher&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e"&gt;Visual Studio 2008 Service Pack 1&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=333325fd-ae52-4e35-b531-508d977d32a6"&gt;.NET Framework 3.5&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7"&gt;.NET Framework 3.5 Service Pack 1&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/express/sql/download/"&gt;SQL Server 2008 Express Edition or higher&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.asp.net/ajax/ajaxcontroltoolkit/"&gt;Microsoft ASP.NET AJAX Control Toolkit&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&amp;amp;displaylang=en"&gt;Microsoft ASP.NET MVC&lt;/a&gt; (we did not present it, but we included parts)&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed"&gt;Microsoft Silverlight Tools&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=8d933343-038f-499c-986c-c3c7e87a60b3"&gt;Silverlight SDK&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&amp;amp;DisplayLang=en"&gt;Microsoft Composite WPF Application Guidance&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Feedback, Questions?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If you have any feedback to the track, to Rent-A-Worker or the content itself feel free getting in touch with &lt;a href="http://blogs.msdn.com/knom"&gt;Max&lt;/a&gt; and me through our blogs. We would be more than happy about feedback on the whole track, our sessions, demos, contents, about what we should keep doing and what we should stop doing etc.&lt;/p&gt; &lt;p&gt;Cheers&lt;br&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9526319" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>Identity Interoperability - Geneva Beta 1 STS with .NET Client and Netbeans 6.5 / Metro 1.3 / WSIT / Java client working ... again ...</title><link>http://blogs.msdn.com/mszcool/archive/2009/01/23/identity-interoperability-geneva-beta-1-sts-with-net-client-and-netbeans-6-5-metro-1-3-wsit-java-client-working-again.aspx</link><pubDate>Fri, 23 Jan 2009 17:48:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9372686</guid><dc:creator>mszCool</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9372686.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9372686</wfw:commentRss><description>&lt;p&gt;In October I published &lt;a href="http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx#comments"&gt;a posting on Identity Interoperability&lt;/a&gt; based on a PoC I created of TechEd Europe Developers 2008 and our local DevCamp 2008 conference. The prototype was based on Codename "Zermatt" on the Microsoft-side and on NetBeans 6.5 Beta 2 as well as Metro 1.3 / WSIT Beta at this point of time... As I had to demonstrate the prototype within a customer engagement I updated the stuff to Microsoft Geneva Framework Beta 1, Netbeans 6.5 RTM and Metro 1.3 / WSIT RTW. Well, there have been some changes which essentially where driving me crazy... therefore I thought I'll give you an update and show, how you can make identity interoperability reality between those platforms with&lt;/p&gt; &lt;ul&gt; &lt;li&gt;an active STS based on Geneva Framework Beta 1  &lt;li&gt;a .NET-based client using WCF of .NET Framework 3.5 SP1  &lt;li&gt;a Java-based relying party implemented with Netbeans 6.5 RTM and Metro 1.3 RTW&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Again I will discuss all the necessary details for making my samples running on your machine...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Sample Downloads for this posting&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;First of all, download the samples for this posting which I've updated from Zermatt to Geneva Framework Beta 1 and from Netbeans Beta to Netbeans 6.5 release and Metro 1.3 / WSIT RTW here:&lt;/p&gt; &lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-c57a431d03937fc0.skydrive.live.com/embedrowdetail.aspx/.Public/IdentityInterop2009/IdentityInterop2008.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Pre-Requisites&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Before you can begin with the action make sure you download and extract the following packages to your local machine. I use the directory "D:\IdentityInterop2008" as a base directory... when you see this in one of the screen-shots map to your local base directory!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft-side  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/default.mspx"&gt;Visual Studio 2008 Professional&lt;/a&gt; with &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dfbee1648-7106-44a7-9649-6d9f6d58056e%26DisplayLang%3den"&gt;Service Pack 1&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d333325fd-ae52-4e35-b531-508d977d32a6%26DisplayLang%3den"&gt;.NET Framework 3.5&lt;/a&gt; with &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dab99342f-5d1a-413d-8319-81da479ab0d7%26DisplayLang%3den"&gt;Service Pack 1&lt;/a&gt;  &lt;li&gt;&lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=642"&gt;Microsoft Geneva Framework Beta 1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Java-side  &lt;ul&gt; &lt;li&gt;&lt;a href="http://java.sun.com"&gt;Java SDK&lt;/a&gt; (5 or 6)  &lt;li&gt;&lt;a href="http://www.netbeans.org/"&gt;Netbeans 6.5 RTM&lt;/a&gt;  &lt;li&gt;&lt;a href="https://metro.dev.java.net/1.3/"&gt;Java Metro 1.3 RTM&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.dom4j.org/dom4j-1.6.1/"&gt;Dom4J 1.x&lt;/a&gt; (I have used this one)  &lt;li&gt;&lt;a href="http://jaxen.org/"&gt;Jaxen&lt;/a&gt; (which is a pre-requisite for dom4j)  &lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;Java Cryptography Extensions&lt;/a&gt; with support for higher bit-rates&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Code Changes from Zermatt to Geneva Beta 1&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I had to update my code as there are some not very well documented changes from Zermatt to Geneva Framework Beta 1;) There are two cool blog postings by Yossi Dahan summarizing the breaking changes:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.sabratech.co.uk/blogs/yossidahan/2008/11/from-to-framework.html" href="http://www.sabratech.co.uk/blogs/yossidahan/2008/11/from-to-framework.html"&gt;http://www.sabratech.co.uk/blogs/yossidahan/2008/11/from-to-framework.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.sabratech.co.uk/blogs/yossidahan/2008/11/from-to-framework-part-ii.html" href="http://www.sabratech.co.uk/blogs/yossidahan/2008/11/from-to-framework-part-ii.html"&gt;http://www.sabratech.co.uk/blogs/yossidahan/2008/11/from-to-framework-part-ii.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The download of this post also contains the updates of my demos from TechEd Europe 2008 developers...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Installing the Pre-Requisites on Java&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;As for the .NET-side the installation-process is pretty straight-forward (install Visual Studio and it's SP1 which includes .NET and then install Geneva Framework and you're done;)) I just outline, what you have to do on the Java-side to make things working...&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Install Netbeans and install all Netbeans updates. Very important: install Glassfish v2 with Netbeans as well.  &lt;li&gt;Install the Java Cryptopraphy Extensions policy files. for this purpose extract the JCE download and copy it to the files to the following directories:&lt;br&gt;C:\Program Files\Java\jre1.5.0_15\lib\security&lt;br&gt;and C:\Program Files\Java\jdk1.5.0_15\jre\lib\security&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/jce_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="258" alt="jce" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/jce_thumb.png" width="405" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Make sure that the Glassfish v2 server is configured within your Netbeans 6.5 IDE as outlined &lt;a href="http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx#comments"&gt;in my previous post&lt;/a&gt; on this topic.  &lt;li&gt;&lt;strong&gt;TRICKY if you've been working with Netbeans beta or RC&lt;/strong&gt;: in the beta or RC versions of netbeans, the option for selecting .NET 3.5 / Metro compatibility and therefore enforcing the correct WS-* standard versions for the messaging are simply not available... no update install, nothing worked. The reason is very simple: Netbeans pre-releases were shipping with Metro while the RTM of Netbeans 6.5 does not ship with Metro 1.3, anymore...&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/NewWebService_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="123" alt="NewWebService" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/NewWebService_thumb.png" width="351" border="0"&gt;&lt;/a&gt; &lt;br&gt;As you can see, the interoperability option is disabled because Metro is not installed on my Glassfish instance. Therefore we need to install Metro. Unfortunately the documentation on how-to "install" Metro is pretty confusing. It tells to execute an ant-script that installs metro as you can see in the following screen-shot:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Administrator%20Java%20Command%20Prompt_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="226" alt="Administrator Java Command Prompt" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Administrator%20Java%20Command%20Prompt_thumb.png" width="426" border="0"&gt;&lt;/a&gt;&lt;br&gt;That means in a command prompt where I have all the Java environment variables set I execute the following statement:&lt;br&gt;&lt;font face="Courier New"&gt;&amp;lt;antdir&amp;gt;\ant &amp;lt;workdir&amp;gt;\metro\metro-on-glassfish.xml install&lt;/font&gt;&lt;br&gt;After you've executed this command &lt;strong&gt;while neither Netbeans nor Glassfish is running&lt;/strong&gt; and you restart Netbeans, the .NET compatibility option should be available as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/NewWebService%20(2)_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="197" alt="NewWebService (2)" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/NewWebService%20(2)_thumb.png" width="404" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Make the .NET-side running on your machine&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Now that we have anything installed on the machines we can start making things running on your machines. For the Microsoft-side the first step is installing the certificates in the localhost's certificate store. For this purpose follow these steps:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Start the Microsoft Management Console (Run -&amp;gt; mmc.exe)  &lt;li&gt;Select "File -&amp;gt; Add/Remove Snap In..."  &lt;li&gt;In the dialog that fires up select "Certificates" in the left list.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Add%20or%20Remove%20Snap-ins_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="264" alt="Add or Remove Snap-ins" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Add%20or%20Remove%20Snap-ins_thumb.png" width="370" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Select "Computer" and then "Local Computer" in the options for opening the local machine's certificate store.  &lt;li&gt;Import the certificates "localhost.pfx" and "sts.pfx" into the Machines "My" store by right-clicking "Personal" and selecting "All Tasks -&amp;gt; Import". The password for the PFX-files in my pre-requisites folder is &lt;strong&gt;password&lt;/strong&gt;.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="134" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_thumb.png" width="339" border="0"&gt;&lt;/a&gt;  &lt;li&gt;After you've imported the certificates into the My-Store, your certificate store should look as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Console1%20-%20%5BConsole%20RootCertificates%20(Local%20Computer)PersonalCertificates%5D%20(2)_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="204" alt="Console1 - [Console RootCertificates (Local Computer)PersonalCertificates] (2)" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Console1%20-%20%5BConsole%20RootCertificates%20(Local%20Computer)PersonalCertificates%5D%20(2)_thumb.png" width="389" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Import both certificates into the "Trusted People"-store as well so that the certificate validation can succeed!  &lt;li&gt;Now start Visual Studio 2008 as administrator (so that WCF can register all listeners while debugging) and open the solution &lt;font face="courier new"&gt;&amp;lt;working-directory&amp;gt;\Simple STS For Active Clients\SimpleSTSForActiveClients-VS2008.sln&lt;/font&gt;  &lt;li&gt;For verifying if the Microsoft-side is working, start the projects SimpleActiveSTS-VS2008, ClaimsAwareWebService-VS2008 and NET.TestClient for debugging (or without debugging).  &lt;li&gt;In the Client enter "net" and press enter. Your screen with the running applications should look as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/CWindowssystem32cmd.exe_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="CWindowssystem32cmd.exe" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/CWindowssystem32cmd.exe_thumb.png" width="385" border="0"&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Make the Java-side running on your machine&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;After you've setup the Java-configuration as outlined before, the only things left are (a) opening and configuring my web service project and (b) configuring the certificates of your Glassfish domain. For this purpose follow these steps to make things running:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;For a default configuration of Netbeans 6.5 installations, the first step is taking a look at where your Glassfish personal domain is going to be executed. For this purpose open Netbeans, switch to the "Servers" tab in your solution explorer / project explorer and view the properties of Glassfish:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_thumb_1.png" width="171" border="0"&gt;&lt;/a&gt;  &lt;li&gt;In the dialog appearing you see, where your personal domain is going to be executed. This is important because this directory contains the *.jks files which are the certificate storage in the Java-solutions:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Servers_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="275" alt="Servers" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Servers_thumb.png" width="386" border="0"&gt;&lt;/a&gt;&lt;br&gt;As you can see in the preceeding dialog, my example domain is running in the "D:\Data\.personalDomain" directory. There you will find two files, the&amp;nbsp; cacerts.jks file (trusted certificates) and the keystore.jks (server certificates).  &lt;li&gt;Now that you know these stores, you need to import the STS' certifcate into the cacerts.jks store. For this purpose you import the STS certificate from the file I provide within the "pre-requisites\sts.cer" file as follows from a Java command prompt:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Administrator%20Java%20Command%20Prompt%20(2)_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="Administrator Java Command Prompt (2)" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Administrator%20Java%20Command%20Prompt%20(2)_thumb.png" width="410" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;font face="courier new"&gt;keytool -import -alias sts -file sts.cer -keystore d:\data\.personalDomain\personalDomain\config\cacerts.jks&lt;/font&gt;  &lt;li&gt;Next you need to export the Glassfish domain certificate from the keystore.jks file as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Administrator%20Java%20Command%20Prompt%20(3)_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="131" alt="Administrator Java Command Prompt (3)" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Administrator%20Java%20Command%20Prompt%20(3)_thumb.png" width="407" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;font face="Courier New"&gt;keytool -export -alias s1as -file s1as.cer -keystore "d:\Data\.personalDomain\personalDomain\config\keystore.jks"&lt;/font&gt;&amp;nbsp; &lt;li&gt;Finally the in step 4 exported certificate needs to be imported in the Windows certificate store, again into the Trusted People and the My store of the local machine. The following screen-shot shows the imported certificate in the Windows Certificate store highlighted - note that the certificate will be generated during the domain-creation / installation process and will have your machine-name in it's subject.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Console1%20-%20%5BConsole%20RootCertificates%20(Local%20Computer)Trusted%20PeopleCertificates%5D_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="215" alt="Console1 - [Console RootCertificates (Local Computer)Trusted PeopleCertificates]" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/Console1%20-%20%5BConsole%20RootCertificates%20(Local%20Computer)Trusted%20PeopleCertificates%5D_thumb.png" width="410" border="0"&gt;&lt;/a&gt;&lt;br&gt;The "vaiom" certificate is the "s1as.cer" file I previously exported from the keystore.jks Glassfish store. Note that I have imported it into both, the "Personal" and the "Trusted People" store!  &lt;li&gt;Therefore the next step is modifying a line of code in my STS implementation to match the Glassfish' certificate name for encrypting the SAML token. The following screen-shot outlines the place where you need to do that.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="241" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_thumb_2.png" width="402" border="0"&gt;&lt;/a&gt; &lt;br&gt;As the previous image shows, the string-constant javaGlassfishCertificateName needs to have the full machine-name in the first part of the common name (highlighted in the image). Note that if your machine is joined to a domain you need to enter the full domain name of the machine name as this is the way Glassfish generates the name for these certificates.  &lt;li&gt;Now update the URL for your NET.TestClient project by opening the configuration "app.config" in the project and modifying the URL of the Java-Web service to match your machine-name and the ports used by Glassfish:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_thumb_3.png" width="400" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Now start the STS and the NET.TestClient from within Visual Studio (best without debugging by highlighting each of the projects and pressing CTRL-F5).  &lt;li&gt;Next it's time to start the Netbeans IDE and open the project "&amp;lt;workingdir&amp;gt;\JavaNewService" that I am delivering in the downloads.  &lt;li&gt;Verify the configuration by right-clicking the TestClaimsBased node in the Web Services node within Netbeans. The configuration should look as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="254" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/image_thumb_4.png" width="406" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Now right-click the JavaNewService node in the proejct-explorer of Netbeans and select "Deploy". This should compile the project, start the Glassfish server and deploy the project. The output-window of Glassfish should show the URL where the project is running then as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/JavaNewService%20-%20NetBeans%20IDE%206.5_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="262" alt="JavaNewService - NetBeans IDE 6.5" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/JavaNewService%20-%20NetBeans%20IDE%206.5_thumb.png" width="403" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Now switch to the running NET.TestClient instance, enter Java and press enter (cross the fingers now;))  &lt;li&gt;If your client's output looks as follows then you're fine, everything worked very well:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/CWindowssystem32cmd.exe%20(2)_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="140" alt="CWindowssystem32cmd.exe (2)" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/CWindowssystem32cmd.exe%20(2)_thumb.png" width="409" border="0"&gt;&lt;/a&gt;  &lt;li&gt;Switch to your Netbeans IDE and open the Glassfish output window. It should have all the claims extracted from the SAML-token in it's output window as follows:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/JavaNewService%20-%20NetBeans%20IDE%206.5%20(2)_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="324" alt="JavaNewService - NetBeans IDE 6.5 (2)" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteroperability.5Releaseworking_A315/JavaNewService%20-%20NetBeans%20IDE%206.5%20(2)_thumb.png" width="411" border="0"&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now you're done, everything is fine and the identity-interop experiment was successful... hope you enjoyed it and hope that this helps you in the future in your projects...&lt;/p&gt; &lt;p&gt;Have a nice weekend&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9372686" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>Presentation on Microsoft's Software Factories and Modeling Strategy</title><link>http://blogs.msdn.com/mszcool/archive/2008/12/22/presentation-on-microsoft-s-software-factories-and-modeling-strategy.aspx</link><pubDate>Mon, 22 Dec 2008 11:30:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9246563</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9246563.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9246563</wfw:commentRss><description>&lt;p&gt;Last week I did a presentation at the technical university of Vienna on Microsoft's strategies for modeling and Software Factories. It was a great pleasure and fun for me to deliver this presentation as we had really interesting discussions afterwards with students on these topics.&lt;/p&gt;  &lt;p&gt;Below you can find the assets I produced for this presentation as downloads:&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://cid-c57a431d03937fc0.skydrive.live.com/self.aspx/.Public/200812%20TU%20Vienna/ModelingStrategy.pdf"&gt;PowerPoint Presentation Download (as PDF)&lt;/a&gt;    &lt;br /&gt;&lt;a target="_blank" href="http://cid-c57a431d03937fc0.skydrive.live.com/self.aspx/.Public/200812%20TU%20Vienna/SimpleWSFactory.zip"&gt;Simple WCF Service Factory Demo&lt;/a&gt;    &lt;br /&gt;&lt;a target="_blank" href="http://cid-c57a431d03937fc0.skydrive.live.com/self.aspx/.Public/200812%20TU%20Vienna/TestSimpleDSL.zip"&gt;Simple Test DSL&lt;/a&gt; created with the &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59ec6ec3-4273-48a3-ba25-dc925a45584d&amp;amp;DisplayLang=en"&gt;VS 2008 SDK&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Although I haven't been blogging a lot about this topic, yet, I strongly believe in this strategy. Especially since I attended the Strategic Architect Forum where Jack Greenfield clarified on some recent developments publicly announced at PDC 2008 last October. The key-questions Jack answered, are for me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;UML and Microsoft - Why did Microsoft change it's perception according to UML and includes UML-diagrams with Visual Studio 2010 now while they were claiming it isn't a core strategy?&lt;/strong&gt;      &lt;br /&gt;Well, simple and pragmatic: my understanding is that we think you can boost your productivity for most software products with factories and DSLs for about 60-80% of the development. For many more &amp;quot;specialized&amp;quot; developments that weren't part of your product-variation planning for some reasons (e.g. ROI) you still need to have structured processes and ways for covering these parts. This is exactly where UML and other general-purpose modeling-approaches can help, definitely. And I think that besides of the fact that customers want us to support UML, that is the major reason for doing so.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;How does the future of DSL-Toolkit look like as Microsoft announced OSLO at PDC in October?&lt;/strong&gt;      &lt;br /&gt;I think the easiest way to answer these questions is taking a look at &lt;a target="_blank" href="http://blogs.msdn.com/jackgr"&gt;Jack Greenfields&lt;/a&gt; and &lt;a target="_blank" href="http://blogs.msdn.com/stuart_kent"&gt;Stuart Kents&lt;/a&gt; blog. Click one of the following links below:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://blogs.msdn.com/stuart_kent/archive/2008/11/07/dsl-tools-and-oslo.aspx"&gt;http://blogs.msdn.com/stuart_kent/archive/2008/11/07/dsl-tools-and-oslo.aspx&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/stuart_kent/archive/2008/11/05/dsl-tools-in-visual-studio-2010.aspx"&gt;http://blogs.msdn.com/stuart_kent/archive/2008/11/05/dsl-tools-in-visual-studio-2010.aspx&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/softwarefactories/archive/2008/05/26/software-factories-2-0.aspx"&gt;http://blogs.msdn.com/softwarefactories/archive/2008/05/26/software-factories-2-0.aspx&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/architecture/blueprints.aspx"&gt;http://msdn.microsoft.com/en-us/architecture/blueprints.aspx&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;So the answer seems to be pretty simple according to these blog-postings: the much richer successor of GAX/GAT will be &lt;a target="_blank" href="http://www.codeplex.com/blueprints"&gt;Microsoft Blueprints&lt;/a&gt;. For DSL Tools and Blueprints the product team wants to have a plan in place for smooth migration. But as I personally think that OSLO will take some more time to complete, I think we have some &amp;quot;time-buffer&amp;quot; here. In the meantime I think DSL-tools are a pretty good way to move on;) Currently I am thinking about creating a DSL for Composite WPF which might be a funny think... depends on how much time I have left in my vacation next week:))&lt;/p&gt;  &lt;p&gt;Having that said I wish all of you a merry Christmas and a happy New Year;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9246563" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>Azure Demo Solution - Cloud Computing Day 2008 Last Week with David Chappell</title><link>http://blogs.msdn.com/mszcool/archive/2008/12/16/azure-demo-solution-cloud-computing-day-2008-last-week-with-david-chappell.aspx</link><pubDate>Tue, 16 Dec 2008 20:29:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9226812</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9226812.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9226812</wfw:commentRss><description>&lt;p&gt;Right immediately after my previous post the next one is following;) Last week on Friday, December 12th, we had a great event together with David Chappell in our new conference center right above our M.I.C. in Vienna.&lt;/p&gt;  &lt;p&gt;At this cloud computing day, David gave a great insight on the Cloud Computing market in general and, of course, especially on Microsoft's offerings around the Windows Azure Services platform. David did a great job in talking about the different flavors of platforms that are available on the market from a variety of vendors (especially Microsoft, Amazon, Google and Salesforce.com). Also David was great in explaining the core business and architectural concepts of our own cloud offerings around Azure.&lt;/p&gt;  &lt;p&gt;In the second part of the conference day I had the pleasure to once again step up and do a deep-dive coding session (although I shouldn't as an architect... but I still love getting my hands dirty if the topic and the prototype is cool and interesting;)). You can download the demo I presented by clicking the link below. I'd recommend to further read this posting to get an understanding of what I did;)&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-c57a431d03937fc0.skydrive.live.com/embedrowdetail.aspx/.Public/Cloud%20Computing%20Day%202008/CloudDay2008Demos.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;So I decided to implement a complete scenario to demonstrate some of the core concepts of the Azure Services platform (not touching other parts of the platform such as .NET services, SQL Services or Live Serivces;)). With the scenario I tried to show the following concepts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Web Roles and Worker Roles and how-to use them. &lt;/li&gt;    &lt;li&gt;Queue-based storage and how-to leverage queues for asynchronous communication between web- and worker-roles. &lt;/li&gt;    &lt;li&gt;Finally the blob-storage as a means for storing binary data similar to file-systems in on-premise operating systems. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The scenario I decided to implement was a simple shop-application as you can see in the following graphics. The web-role was supposed to be the front-facing part of the shop while the worker-role was intended to process orders submitted through the shop in an asynchronous way. As a simple but nice example for order-processing I decided to use the &lt;strong&gt;Office Open XML APIs&lt;/strong&gt; to generate a Microsoft Office Word 2007-based order-document that gets stored in the blob-storage and made accessible through the web role afterwards.&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://zawq9w.bay.livefilestore.com/y1pjm4S46C8Ed9gocxp04_sfDR_mL5jW2wWvJ4c3qO7T0fzaeSf5DwbqR4ziTfPt5Qgiwmj7a4yqwI/ScenarioOverview.jpg"&gt;&lt;img src="http://zawq9w.bay.livefilestore.com/y1pjm4S46C8Ed9gocxp04_sfDR_mL5jW2wWvJ4c3qO7T0fzaeSf5DwbqR4ziTfPt5Qgiwmj7a4yqwI/ScenarioOverview.jpg" width="437" height="256" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;During the 90 min. demo I started building a simple ASP.NET application with no special things. I used the ASP.NET Session-object for storing my shopping based just for the sake of having a simple start-up for the demo-session without any new concepts. We then even deployed the session on the Azure online platform to demonstrate the admin-UI the current CTP is offering. We did that at the beginning as currently the deployment and configuration-update takes some time on the CTP (about 20 min. ... but unfortunately I then forgot to show the running application).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Hint about a question I got during the presentation on ASP.NET Session-State:&lt;/strong&gt; of course the ASP.NET session state isn't persistent and therefore available across multiple instances of a web-role. For this purpose you would need to write your own session-state provider that leverages Azure-Table-Store or Blob-Store for getting persistent storage on sessions. There is actually an example of how-to do this for the session provider and even for other providers of ASP.NET such as Membership or Roles API!!! So that's the way of dealing with persistent sessions in Azure:) Hope that answered the question now:)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In the next step we created the Check-Out page that XML-serialized the contents of my Session-based shopping basked (which was a simple list of Product-items) and put it into an Azure Queue-Storage to make this stuff available for worker role instances that asynchronously processed the order (generated documents with Office Open XML APIs).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;One question here was about scaling up worker-roles because I used &amp;quot;waiting loops&amp;quot; that where waiting for incoming messages on the loop with thread-sleeps of 10sec.&lt;/strong&gt;. Of course that wasn't a very scalable approach, I tried to keep it simple. For scaling Worker Roles you have several but in my opinion very well-known approaches. Let me give you just a view of them: spawning threads whenever a new message was received or creating and running multiple instances of worker roles are ways for scaling out at this layer.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Then this brought up a second question - how is it about locking messages that are accessed from the Queue if multiple Worker Role instances (or threads) are running?&lt;/strong&gt; And well, the answer is simpler than I thought (I didn't know that at the presentation). Actually the queue has mechanisms to avoid &amp;quot;parallel&amp;quot; access to the same message by multiple worker role instances. When you issue a GET-operation onto the queue, it makes (a) makes sure that the sender of the first GET-message that arrives for a message exclusively gets access to the message (we do not need to deal with that) and (b) you can add a HTTP header to your request where you can specify, for how long a message on the queue will be invisible to other requests for retrieving the message. The default-value here is 30 sec. and the max. value is 2 hours in the current CTP. If you just want to access the messages without making them invisible you can use a PEEK instead of a GET-request to the queue.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Afterwards the last question was whether there is a way for a worker role to be notified if a new message is available at the queue instead of querying the queue continuously as we did it in our example! &lt;/strong&gt;Well, not really without using the .NET service bus and WCF here (I haven't found anything on this)... but the reason is pretty obvious for me, as well. Every storage-concept of the Azure services platform is accessed through REST-style APIs. That means whenever you want to get something from the storage you need to execute an HTTP request against the URL of your storage and that's it. For example, putting a message to a Queue is an HTTP post request with the XML-payload in the body to the Queue's URL. Retrieving a message from the queue and blocking it for a specified period of time is an HTTP GET request to the queue (the default-time is 30 sec. as outlined before) and retrieving a message without blocking it is an HTTP request with a custom verb (PEEK). So it always needs to be a pull-based access instead of being notified. Of course with a combination of using worker roles and WCF-services in the service bus you can &amp;quot;mimick&amp;quot; the behavior of being notified. I know this might be a weakness, but don't forget that we are (a) in an very early stage of the Azure platform and that (b) there are some more sophisticated aspects that allow you implementing more complex communication patterns such as the .NET service bus available which we didn't use at all in our demo.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In the next step we implemented the logic of the worker role that generated the document. We then finally stored the document in the Azure blob-storage which is a kind of a replacement of a file-system as we know it from on-premise operating systems. From this storage we accessed the documents in the last ASPX-page we created back in our worker role...&lt;/p&gt;  &lt;p&gt;Well, and after that I was pretty tired because it was a long, hard and risky demo with these CTP-bits... but I am happy that anything worked out and I hope that you finally liked the presentation and the contents of this posting where I tried to also answer some of the questions I got during the demo-walk-through. &lt;em&gt;&lt;strong&gt;For me it was great fun doing this in any case - it was a great day with David before lunch and it was so cool walking through this demo which I prepared until about 1 a.m. the evening before... cool stuff and I really believe in this kind of cloud-computing for many scenarios&lt;/strong&gt;...&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you want to start working with these things, just try to request your access tokens (will take some time) through the following resources:&lt;/p&gt;  &lt;p&gt;&lt;a title="Azure Services Invitations" href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=681"&gt;Azure Services Invitations&lt;/a&gt; on the Microsoft Connect platform (connect.microsoft.com) as mentioned during my session...&lt;/p&gt;  &lt;p&gt;&lt;a title="http://lx.azure.microsoft.com/" href="http://lx.azure.microsoft.com/"&gt;http://lx.azure.microsoft.com/&lt;/a&gt; which is the official entry point for the Windows Azure serivces platform management console.&lt;/p&gt;  &lt;p&gt;&lt;a title="https://www.microsoft.com/azure/default.mspx" href="https://www.microsoft.com/azure/default.mspx"&gt;https://www.microsoft.com/azure/default.mspx&lt;/a&gt; which is Microsoft's official entry-point to the Azure services platform and information on the Azure services platform.&lt;/p&gt;  &lt;p&gt;If you have any further feel free commenting on this blog post or contacting me through this blog here;) I'd be happy about any feedback from you:)&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9226812" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>TechEd Europe 2008 - Downloads and Architectural Thoughts</title><link>http://blogs.msdn.com/mszcool/archive/2008/12/16/teched-europe-2008-downloads-and-architectural-thoughts.aspx</link><pubDate>Tue, 16 Dec 2008 19:32:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9226463</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9226463.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9226463</wfw:commentRss><description>&lt;p&gt;A little late but nevertheless I managed to publish my demos from this year's TechEd Europe 2008 in Barcelona from my session on the &lt;strong&gt;identity meta system applied to real world projects &lt;/strong&gt;in Austria.&lt;/p&gt;  &lt;p&gt;As mentioned, the experience I summarized in the session comes from a project we've been driving in Austria in the electronic health care sector as outlined &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/architecture/cc836394.aspx"&gt;in issue 16 of the architecture journal&lt;/a&gt; in &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/architecture/cc836394.aspx"&gt;my article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can download the demo applications from my session at TechEd by clicking the link below:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-c57a431d03937fc0.skydrive.live.com/embedrowdetail.aspx/.Public/TechEd%20EMEA%202008/TechEd2008IdentityDemos.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Also here you can download the presentation material of my session by clicking below:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-c57a431d03937fc0.skydrive.live.com/embedrowdetail.aspx/.Public/TechEd%20EMEA%202008/ARC314%7C_Szpuszta%7C_20081110%7C_102316.pdf" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Essentially in my presentation I really focused on discussing four things where in my opinion the concepts from the identity meta system vision really helped us implementing our stuff:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Clear separation of concerns&lt;/strong&gt;       &lt;br /&gt;Separation of where authentication happens from where authorization happens enables you switching authentication modes without affecting your back-end services. If authentication happens at all your services, you need to touch all the clients and services for doing so. If you separate authentication out into a Security Token Service you just need to touch your clients and the STS while the services at the back end can remain untouched. In the attached demos you need to work with the NET.SecondTestClient, the mszcool-ActiveSTS and the ClaimsAwareWebService-VS2008 projects to test out what I've shown in my session. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Simplification through Claims        &lt;br /&gt;&lt;/strong&gt;Claims-based security helped us implementing the two-factor authentication that was a requirement for according to the strong data protection law. More on that later in this post. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Building bridges between domains and/or platforms&lt;/strong&gt;       &lt;br /&gt;On the one hand side trust-chains between Security Token Services helped us separating out responsibilities and ownerships given based on political reasons while still remaining an easy possibility to change these responsibilities and ownerships by just merging or splitting STS'es if the political interests changed. On the other hand transformation of tokens from rather proprietary tokens to standardized tokens is another thing where the separation of concerns between authentication (STS) and authorization (Relying party service) really can help. In the attached demo you need to work with the &lt;strong&gt;JavaWebHostNew&lt;/strong&gt; Netbeans 6.5 project as well as the NET.TestClient and the SimpleActiveSTS-VS2008 projects to try things I've shown in my session at TechEd. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Coming back to the second point I outlined above. If you're working with the NET.ThirdClient, the mszcool-activeSTS and the ClaimsSuperTokenService you can try out a simple implementation of our approach for making sure that only things are published into some e-health system if the patient explicitly agrees at leat two times. The model from a business point-of-view was the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For getting read access, a patient needs to explicitly authenticate with his e-card when visiting a doctor for a medical treatment at the reception. For the time of the treatment the doctor got &lt;strong&gt;read-only&lt;/strong&gt; access to documents published in a variety of e-health services. For this purpose, the e-card STS issues a &lt;strong&gt;standard-token&lt;/strong&gt; with standard-claims based on the e-card authentication. e-health services do not allow to update any content with this standard-token because the STS does not add a what we called &lt;strong&gt;super-token-claim&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;For updating content in e-health services the patient needs to explicitly authenticate for each update-process in addition to the previously mentioned, first authentication step. During this authentication the client application sends the previously issued token as a means of authentication to the STS which leads the STS to add a super-token-claim to the issued token. Therefore e-health services detect the presence of the super-token-claim and allow writing / updating content to their storage. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Subsequent graphics should outline what's going on there. Take the first graphic as an example. Here the previously defined process is executed as needed. The client authenticated for read-stuff and gets a token for reading stuff without the super-token-claim. Later during the medical treatment the doctor wants to publish stuff and therefore the patient authenticates a second time. That second authentication includes the previously issued SAML token which leads the STS to include the super-token-claim in the newly issued token. With this newly issued token the client software of the doctor can issue an update on the back end e-health service of the current context.&lt;/p&gt;  &lt;p&gt;&lt;a title="Everything Okay" target="_blank" href="http://zawp9w.bay.livefilestore.com/y1ppnvhOSj8zP0_n9qJRYg805PcT1V-FxfUwasefJIXdnBqFhe9L16OIRAn5snMZbKMSFyMWq0Ztwk/TechEd%20Demo%20Part%201.jpg"&gt;&lt;img src="http://zawp9w.bay.livefilestore.com/y1ppnvhOSj8zP0_n9qJRYg805PcT1V-FxfUwasefJIXdnBqFhe9L16OIRAn5snMZbKMSFyMWq0Ztwk/TechEd Demo Part 1.jpg" width="416" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If one of the authentication steps, either the first or the second one is missing, the STS won't issue a token with a super-token-claim. And therefore the e-health services should and can simply deny access to any updating operation - based on a simple query whether a claim has been added to the token issued by the STS or not. The following graphic demonstrates what happens if the client tries to update content in an e-health services without the first authentication-step so that you can better understand our selected approach and idea:&lt;/p&gt;  &lt;p&gt;&lt;a title="No two-phase authentication" target="_blank" href="http://zawp9w.bay.livefilestore.com/y1pY4xj4VtY_Q7kPOsir0E2Lqh0dA8soaJcbR1RzQX0lfy1_nW7lV8NGD7pqpKcq2lOt4kqint0zAw/TechEd%20Demo%20Part%202.jpg"&gt;&lt;img src="http://zawp9w.bay.livefilestore.com/y1pY4xj4VtY_Q7kPOsir0E2Lqh0dA8soaJcbR1RzQX0lfy1_nW7lV8NGD7pqpKcq2lOt4kqint0zAw/TechEd Demo Part 2.jpg" width="421" height="231" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The neat thing is that the e-health services really just need to query the issued SAML-token from the STS for the super-token-claim. If it's there let updates happen, if not then not;) As simple as that. In classic scenarios they would need to manage sessions, state and all that stuff what is much more complicated.&lt;/p&gt;  &lt;p&gt;In my opinion this really shows, how claims-based security (as a part of the concepts from the identity meta system vision) really simplifies complex processes in the security world by separating the responsibility of authentication from authorization and by making authorization as simple as querying standardized tokens for claims.&lt;/p&gt;  &lt;p&gt;If you're interested in my approach for building bridges between platforms through the separation of concerns with STS'es and relying parties, just take a look at my &lt;a target="_blank" href="http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx"&gt;previous posting&lt;/a&gt; which I created for TechEd 2008 and the local DevCamp conference &lt;a target="_blank" href="http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx"&gt;here...&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Any questions - feel free asking me through comments or the contact link here of the blogging-engine;)&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9226463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>DevCamp 2008 - Making Security-Interoperability work with a Zermatt-based Security Token Service (STS), a .NET Client and a Java Web Service hosted in Glassfish</title><link>http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx</link><pubDate>Thu, 30 Oct 2008 19:07:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9024712</guid><dc:creator>mszCool</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9024712.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9024712</wfw:commentRss><description>&lt;p&gt;(&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810_NET-Java-Identity-Interop.zip"&gt;Click here to download my Security-Interop-Sample&lt;/a&gt;)    &lt;br /&gt;(&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810%20-%20DevCamp%20Identity%20MetaSystem%20Presentation.pdf"&gt;Click here for downloading the presentation&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;While I am here at PDC studying the most exciting new stuff from Microsoft around Software+Services and much more interesting platform-enhancements (Dublin, Velocity, Geneva etc.) I promised about more than a week ago at the DevCamp 2008 conference in Vienna that I will publish some details about a demo on security I've shown in my session about applying concepts from the Identity Meta System Vision in the real world for heterogeneous environments.&lt;/p&gt;  &lt;p&gt;The session itself was all about taking the separation of concerns in terms of authentication and authorization that is proposed by federated identity patterns. Furthermore it was about learning, how this SoC can help you solving real world problems when it comes down to implementing security in your solutions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810%20-%20DevCamp%20Identity%20MetaSystem%20Presentation.pdf"&gt;Click here for downloading the presentation.&lt;/a&gt; I'd strongly recommend you do this before moving on in this post!&lt;/p&gt;  &lt;p&gt;In the last demo I've shown a Security Token Service (STS) written with Microsoft Codename &amp;quot;Zermatt&amp;quot; that authenticates requests coming from a .NET-based client application through Windows Authentication and transforms the (proprietary;)) Windows-token into a standards-based SAML-token. Why that? Well, non-Windows based platforms won't be able to deal with a proprietary Windows-token for authorizing requests - especially if they're not running on Windows. But they will be able to work with SAML as it is just a signed XML with information about an authenticated user proofed by an identity provider (the security token service). The following picture shows the scenario I've implemented:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="171" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/image_thumb.png" width="413" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this post I give you a step-by-step guide how-to setup the samples which you find for download under the following link:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810_NET-Java-Identity-Interop.zip"&gt;Click here to download my Security-Interop-Sample&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the following sections I summarized the pre-requisites and steps you need to complete for making the sample above work!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Installation Pre-Requisites&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft-Part of the Sample&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msdn.microsoft.com/de-de/vstudio/aa700831.aspx"&gt;Visual Studio 2008 with SP1 installed&lt;/a&gt;        &lt;br /&gt;(Service Pack 1 download &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dfbee1648-7106-44a7-9649-6d9f6d58056e%26DisplayLang%3den"&gt;here&lt;/a&gt;)&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d333325fd-ae52-4e35-b531-508d977d32a6%26DisplayLang%3den"&gt;.NET Framework 3.5&lt;/a&gt; (&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dab99342f-5d1a-413d-8319-81da479ab0d7%26DisplayLang%3den"&gt;with SP1&lt;/a&gt; installed)&lt;/li&gt;      &lt;li&gt;&lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=642&amp;amp;wa=wsignin1.0"&gt;Microsoft &amp;#8220;Zermatt&amp;#8221; (now Geneva Identity Framework) CTP&lt;/a&gt;        &lt;br /&gt;(I have included the version of Zermatt-CTP that I've used for developing the sample in the download so that at later point of times you can try this in an isolated environment without bothering with some breaking changes in Zermatt at first place;))&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Java-Part of the Sample&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;Java2 SDK 1.5.0 with Update 15&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.netbeans.org/community/releases/65/"&gt;Netbeans 6.5 Beta IDE with Glassfish v2&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;JCE Policy Files&lt;/a&gt; installed&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.dom4j.org/dom4j-1.6.1/download.html"&gt;Dom4j 1.6.1&lt;/a&gt; and &lt;a href="http://jaxen.org/releases.html"&gt;Jaxen 1.1.1&lt;/a&gt; installed&lt;/li&gt;      &lt;li&gt;Appropriate Java environment variables set for command prompts. For this purpose I added a sample &amp;#8220;Java Command Prompt&amp;#8221; batch file to the download (located in the &amp;quot;Pre-Requisites\Java&amp;quot;-directory). You need to adopt it based on your installation-path values on your machine.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Steps to make the Microsoft / .NET Side running:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install the certificates using Zermatt Samples Utilities     &lt;br /&gt;The necessary batch-files for doing so are located in the Zermatt Directory (typically &amp;#8220;C:\Program Files\Microsoft Code Name Zermatt\Samples\Utilities&amp;#8221;) &amp;#8211; execute the SamplesPreReqSetup.bat in a Visual Studio Command Prompt as Administrator.&lt;/li&gt;    &lt;li&gt;Run Visual Studio 2008 as Administrator and open the SimpleSTSForActiveClients-VS2008.sln Visual Studio 2008 solution located in the &amp;#8220;&amp;lt;your working folder&amp;gt;\DevCamp\Simple STS For Active Clients&amp;#8221; directory. This is a modified and extended version of the standard Simple Active STS sample included with Microsoft Code Name &amp;#8220;Zermatt&amp;#8221;.&lt;/li&gt;    &lt;li&gt;Right-click the solution and configure the startup-projects so that the STS, the .NET-based test service and the test-client start-up as shown in the following screen-shot:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="254" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image002_thumb.jpg" width="404" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Try the solution by pressing CTRL-F5 in Visual Studio to run everything without debugging. Important is that you follow the following steps in the running applications:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;In the &amp;#8220;ClaimsAwareWebSErvice-VS2008&amp;#8221;-project enter &amp;#8220;1&amp;#8221; to take the included simple active STS as a security token service.&lt;/li&gt;      &lt;li&gt;In the client application type in &amp;#8220;net&amp;#8221; to call the .NET-based service and verify whether the STS and the .NET-based service as well as the client are working properly on your machine!       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image004_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="237" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image004_thumb.gif" width="394" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Make the Java-Side working&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now, after the .NET-based solution is running, we can move forward by making the Java-version of our claims-based web service running. For that purpose follow the subsequent steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First of all run Netbeans Developer studio as administrator and make sure that all application server references are registered with your IDE. With the Netbeans 6.5 beta I&amp;#8217;ve installed, just Glassfish v3 was included in the server list. So you need to add Glassfish v2 (which is the one I&amp;#8217;ve tested the service with) to your services list. For that purpose follow the next sub-steps but note that by default Netbeans should create a personal domain during the installation of the IDE:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;In the left panel switch to the services tab and open the &amp;#8220;Servers&amp;#8221; tree-view element.&lt;/li&gt;      &lt;li&gt;Right-click the &amp;#8220;Servers&amp;#8221;-node and select &amp;#8220;Add Server&amp;#8221;&lt;/li&gt;      &lt;li&gt;Select &amp;#8220;Glassfish V2&amp;#8221; from the list and leave the name below as it is.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image006_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image006_thumb.jpg" width="398" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Create a personal domain for the application server that will install some configuration files in your local user profile. These files also will include the certificate store for your development instance of the app-server.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image008_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image008_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Select a folder for the development domain where you would like to install the configuration files to as shown in the following screen (note that there it will be &amp;#8220;D:\Data\.testDevDomain&amp;#8221; which is what I will refer to later on, as well)       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image010_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image010_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Then you will have to select an administrator user name and a password and afterwards you will need to specify the ports on which the server is running. Make sure that nothing else runs on these ports and note the ports as you will need them later on.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Then open the Java-project I&amp;#8217;ve included in the samples-download. This project is located in the &amp;#8220;&amp;lt;your working folder&amp;gt;\DevCamp\JavaWebHostNew&amp;#8221; directory. Just let Netbeans point to that directory in the open-project dialog and it will detect that this is a Netbeans-project, automatically.&lt;/li&gt;    &lt;li&gt;You probably will need to update a few references to point to dom4j and Jaxen as I use these libraries for some XML processing in the test application. Netbeans will warn you if you need to update the references. If so, switch to the &amp;#8220;Projects&amp;#8221; tab in the panel on the left, navigate to your project &amp;#8220;JavaWebHostNew&amp;#8221; and within there on the libraries-node. Right-click the &amp;#8220;Libraries&amp;#8221;-node and select &amp;#8220;Add Jar / Folder&amp;#8221; from the context menu. Add the &amp;#8220;dom4j-1.6.1.jar&amp;#8221; and the &amp;#8220;jaxen-1.1.1.jar&amp;#8221; files as libraries this way to your project. I&amp;#8217;ve included them in the download in the &amp;#8220;&amp;lt;your working folder&amp;gt;\DevCamp\Pre-Requisites\Java&amp;#8221; directory&amp;#8221;. Also remove all broken references from the project by right-clicking the project and going to the properties:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image012_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="279" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image012_thumb.jpg" width="410" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;After all libraries and references are set-up correctly, you should be able to compile the solution using Netbeans, successfully. Next we can start configuring the application server appropriately to make this stuff running.&lt;/li&gt;    &lt;li&gt;Next we need to install the Java cryptography policy extensions (JCE) with Java to be able to work with our certificates. For this purpose copy all files from the &amp;#8220;&amp;lt;your working folder&amp;gt;\ DevCamp\Pre-Requisites\Java\jce&amp;#8221;-directory to the &amp;#8220;C:\Program Files\Java\jdk1.5.0_15\jre\lib\security&amp;#8221;-directory and overwrite all files.&lt;/li&gt;    &lt;li&gt;Now we need to install certificates for the two sides of the application &amp;#8211; first the Java-service needs to be able to trust the STS and therefore it needs to have the STS&amp;#8217;s public key in its trusted certificates store and second the .NET client and the STS need to have a way to trust the Java service and therefore we need to export the public key from the Java service&amp;#8217;s certificate and import it into the Windows certificate store.&lt;/li&gt;    &lt;li&gt;To ensure, that the Java-service is able to trust and validate tokens issued by the STS, execute the following steps on your machine.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Export the STS certificate from the Windows certificate store as DER-encoded file. Only export the public key. Store the file to a directory of your choice. The certificates are installed in the personal store of the local computer by the previously executed Microsoft Code Name Zermatt Samples Batch-file utilities when setting up the .NET based solution, before. You can get to the machine&amp;#8217;s certificate store by starting a management console (mmc.exe) and selecting &amp;#8220;File &amp;#8211; Add / Remove Snap-In&amp;#8221; and then select &amp;#8220;Certificates&amp;#8221; from the list, click the &amp;#8220;Add &amp;gt;&amp;#8221; button and then click okay. Make sure that you select &amp;#8220;Computer Account&amp;#8221; and &amp;#8220;Local Computer&amp;#8221; when adding the snap-in. You&amp;#8217;ll find the certificate as shown in the following screen-shot:       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image014_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image014_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Import the STS-public key certificate in the trusted certificates store of your Glassfish personal domain by executing the following command (typically the &lt;strong&gt;password&lt;/strong&gt; you have to enter is &lt;strong&gt;changeit &lt;/strong&gt;by default):        &lt;br /&gt;keytool -import -alias sts -file sts.cer -keystore &amp;quot;d:\Data\.testDevDomain\config\cacerts.jks&amp;quot;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image016_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="214" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image016_thumb.jpg" width="403" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Next we need to ensure that the STS and the client can trust the Java service. For this purpose we need to export the Java service&amp;#8217;s certificate and import it in the Windows certificate store. To do so, follow these steps:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Execute the following command to export the default service certificate from glassfish with its public key. This certificate is typically called s1as.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image018_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="216" alt="clip_image018" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image018_thumb.jpg" width="407" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Now import the certificate in the personal store of the local computer of the Windows Certificate store. Also import the certificate into the trusted people store so that the validation of the certificate can succeed.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image020_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="clip_image020" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image020_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Before we test the web service solution we need to make sure that the correct WS-Policy configuration is set for the Java Web Service. For this purpose open the &amp;#8220;Web Services&amp;#8221;-node in your Netbeans-project and double-click the &amp;#8220;JavaTestService&amp;#8221; Web Service in the project. In the designer then click the &amp;#8220;Advanced&amp;#8230;&amp;#8221; button to open the web service configuration dialog and make sure that it looks as shown in the following two screen-shots:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image022_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="353" alt="clip_image022" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image022_thumb.jpg" width="342" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image024_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="351" alt="clip_image024" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image024_thumb.jpg" width="340" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Finally you can un-deploy and deploy the new service to Glassfish as shown in the following screen-shot.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image026_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="220" alt="clip_image026" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image026_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;It&amp;#8217;s important that you note the URL on which your web service is listening depending on the ports you configured for your Glassfish application server instance and development-domain. Typically this should appear in the output-window within the Netbeans-IDE for Glassfish as shown in the following screen-shot:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image028_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="97" alt="clip_image028" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image028_thumb.jpg" width="440" border="0" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Final steps and then running the application&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After you have configured Glassfish, configured the Java Web Service and deployed it, successfully, you can try the interoperability solution between Java and .NET. For this purpose you need to update the .NET test-client&amp;#8217;s configuration to point to your running Java web service and then run the application. The URL to the Java-service is configured in the client&amp;#8217;s App.config (NET.TestClient in my sample solution) as shown in the following screen-shot:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image030_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="269" alt="clip_image030" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image030_thumb.jpg" width="445" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Just one last step before running it &amp;#8211; you need to update the STS so that it encrypts the SAML-token with the certificate of your Glassfish Java Web service. As these certificates are re-generated for each machine you need to update my code in the sample to make it work. Update the certificate-name in the project &amp;#8220;SimpleActiveSTS-VS2008&amp;#8221; of my solution in the file &amp;#8220;MySecurityTokenService.cs&amp;#8221; and change the common name of the certificate to yours (you should only need to replace the machine-name part of the common name which is &amp;#8220;vaiom&amp;#8221; in my sample and should be &amp;#8220;yourmachinename&amp;#8221; in your environment):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image032_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="265" alt="clip_image032" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image032_thumb.jpg" width="438" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After you have updated this one you can try to run the solution and instead of calling the .NET-based service you can call the Java-service by entering &amp;#8220;java&amp;#8221; instead of &amp;#8220;net&amp;#8221; when the client asks you which web service it should call. The following screen-shot shows the resulting application in action. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image034_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="271" alt="clip_image034" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image034_thumb.jpg" width="431" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the console-windows you can see the .NET-based applications running: the claims-aware web service which is not called in this scenario, the security token service which issues a SAML-token based on the Windows identity the client authenticates with and the client itself that calls the Java service this time. In the background you can see the Netbeans IDE with the Glassfish output Window where clearly the Java application outputs the contents of the SAML token it gets passed from the STS. That SAML token just contains claims extracted from the Windows-token the client authenticated with against the STS. And that way we managed to make security-interoperability happen by transforming a proprietary Windows-token to a standardized SAML-token through an STS and give Java access to the contents of the Windows-token. Of course the Java-application could run on a Linux-box as well and still you would be able to use Windows and AD as the primary identity management system for managing users, groups etc. and include Java-services (or other services) running on any OS with your security-infrastructure as they don&amp;#8217;t need to know about any details of the security infrastructure. The only thing they need to know is the Security Token Service which proofs the fact that the user has been authenticated successfully by passing a signed SAML-token through the client to the Java-service. In my opinion that shows one of the things that unveil the real power of a federated identity infrastructure based on the WS-* standards...&lt;/p&gt;  &lt;p&gt;If you have any feedback or questions, feel free getting in touch with me through my blog;) ... of course I'd be happy about any feedback:)&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9024712" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item></channel></rss>