<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Garrett&#039;s Tech Musings</title>
	<atom:link href="http://garrettvlieger.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://garrettvlieger.com/blog</link>
	<description>Thoughts on technology, programming, and the industry</description>
	<lastBuildDate>Thu, 11 Mar 2010 02:04:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Refreshing Claims in a WIF Claims-Aware Application</title>
		<link>http://garrettvlieger.com/blog/2010/03/refreshing-claims-in-a-wif-claims-aware-application/</link>
		<comments>http://garrettvlieger.com/blog/2010/03/refreshing-claims-in-a-wif-claims-aware-application/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 02:04:50 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[ad fs 2.0]]></category>
		<category><![CDATA[claims]]></category>
		<category><![CDATA[refreshing claims]]></category>
		<category><![CDATA[wif]]></category>
		<category><![CDATA[windows identity foundation]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=240</guid>
		<description><![CDATA[With Windows Identity Foundation (WIF), it&#8217;s fairly simple and well-documented on how to consume claims in your claims-aware web application.  What isn&#8217;t entirely clear is how to reload these claims when updates are made to the user&#8217;s information.  How do we refresh the claims, which are stored in an encrypted SAML token cookie?
Let&#8217;s look at a [...]]]></description>
			<content:encoded><![CDATA[<p>With Windows Identity Foundation (WIF), it&#8217;s fairly simple and <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=c3e315fa-94e2-4028-99cb-904369f177c0" target="_blank">well-documented</a> on how to consume claims in your claims-aware web application.  What isn&#8217;t entirely clear is how to reload these claims when updates are made to the user&#8217;s information.  How do we refresh the claims, which are stored in an encrypted SAML token cookie?</p>
<p>Let&#8217;s look at a fairly simple WIF application that allows users to update their profile &#8212; their email address, name, title, and possibly other user information.  In a typical scenario, there would be a call to make a database update and then a subsequent query to retrieve the new data.  However since our claims are controlled by the Security Token Service (STS), we need to somehow force the claims to be refreshed by the central STS.</p>
<p>This is done by making a call to the WSFederationAuthenticationModule to &#8220;sign out&#8221; the user:</p>
<pre language="C#">var module =
Context.ApplicationInstance.Modules["WSFederationAuthenticationModule"]
as WSFederationAuthenticationModule;
module.SignOut(true);</pre>
<p>So what does this actually do?  Well, let&#8217;s look at the process from the beginning:</p>
<ol>
<li>When a user authenticates successfully, a POST is sent back to the relying party endpoint.  This request contains our SAML token that is then stored within a browser cookie.  In fact, several cookies are written as can be seen in the list below:<br />
<img class="alignnone size-full wp-image-246" title="cookies" src="http://garrettvlieger.com/blog/wp-content/uploads/2010/03/cookies1.png" alt="" width="177" height="216" /></li>
<li>When the updates are made, we need to get a reference to the <a href="http://msdn.microsoft.com/en-us/library/microsoft.identitymodel.web.wsfederationauthenticationmodule.aspx" target="_blank">WSFederationAuthenticationModule</a>, which sits in the ASP.NET pipeline and monitors the presence of the authentication cookies.</li>
<li>With our module instance, we can then call SignOut, which simply deletes the session token cookie (FedAuth).<br />
<img class="alignnone size-full wp-image-245" title="cookies" src="http://garrettvlieger.com/blog/wp-content/uploads/2010/03/cookies.png" alt="" width="177" height="177" /></li>
<li>The next request for a secured page within our application will require a hop over to the STS.  Since the user is still authenticated based on the authentication cookies, the STS will reissue fresh claims and a new session token!</li>
</ol>
<p>This process is transparent to the user since the hop is fairly quick, and it allows us to easily reload the user profile information.</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2010/03/refreshing-claims-in-a-wif-claims-aware-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifying the AD FS 2.0 Passive Federation Endpoint</title>
		<link>http://garrettvlieger.com/blog/2009/12/modifying-the-ad-fs-2-0-passive-federation-endpoint/</link>
		<comments>http://garrettvlieger.com/blog/2009/12/modifying-the-ad-fs-2-0-passive-federation-endpoint/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 20:16:08 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[ad fs 2.0]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[passive federation]]></category>
		<category><![CDATA[windows identity foundation]]></category>
		<category><![CDATA[windows internal database]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=209</guid>
		<description><![CDATA[Out of the box, Active Directory Federation Services (AD FS) 2.0 comes bundled with several endpoints to support different protocols (WS-Trust, WS-Federation, etc.), credential types, and security modes.  These endpoints are used for communication to the STS so if you have an application that needs to receive tokens via WCF, you can connect to one [...]]]></description>
			<content:encoded><![CDATA[<p>Out of the box, Active Directory Federation Services (AD FS) 2.0 comes bundled with several <a href="http://technet.microsoft.com/en-us/library/dd727957(WS.10).aspx" target="_blank">endpoints</a> to support different protocols (WS-Trust, WS-Federation, etc.), credential types, and security modes.  These endpoints are used for communication to the STS so if you have an application that needs to receive tokens via WCF, you can connect to one of the provided endpoints depending on your security and transport requirements.</p>
<div id="attachment_217" class="wp-caption aligncenter" style="width: 584px"><a href="http://garrettvlieger.com/blog/wp-content/uploads/2009/12/ADFS-Endpoints.png"><img class="size-large wp-image-217  " title="ADFS Endpoints" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/12/ADFS-Endpoints-1024x515.png" alt="" width="574" height="289" /></a><p class="wp-caption-text">AD FS 2.0 Endpoints</p></div>
<h3>Customizing the Passive Federation Site</h3>
<p>The endpoint that many developers will encounter the most is the <strong>Passive Federation</strong> endpoint.  This is the URI that a user will be redirected to when trying to authenticate with a Windows Identity Foundation (WIF)-enabled site.  In other words, this is the AD FS login page.</p>
<p>So what happens if you want to customize this site?  Well, the <a href="http://msdn.microsoft.com/en-us/library/ee895356.aspx" target="_blank">official documentation</a> describes how you can easily configure three things in the sign-on pages: the accepted authentication types, the theme (CSS) of the site including the logo, and finally the &#8220;behavior and layout&#8221; of the sign-on pages.  There are extension points for creating your own pages as well as modifying the existing ones.</p>
<p>In this posting, I won&#8217;t go into the details of the library used to make these customizations (Microsoft.IdentityServer) but needless to say, you have the ability to control many aspects of the AD FS login process.</p>
<h3>Changing the Passive Federation Endpoint URL</h3>
<p>Once you&#8217;ve decided to customize the login site, it would also be nice to change the location of the site so you&#8217;re not stuck with the hard-wired URI (/adfs/ls).  In my case, I wanted to simply keep the existing site in place (for backup and testing purposes) while putting in a newly customized STS login site.</p>
<p>Since there&#8217;s no way to change the endpoint URI within the management console, you need to update the AD FS configuration, which is conveniently stored <em>in a database column as a single XML file in Windows Internal Database (WID)!</em> Have no fear.  I&#8217;ve written a SQL script (see below) to make this update process much simpler.</p>
<h3>Connecting to Windows Internal Database (WID)</h3>
<p>The first thing you&#8217;ll need to do is to connect to the <a href="http://en.wikipedia.org/wiki/Windows_Internal_Database" target="_blank">Windows Internal Database (WID)</a> instance on your machine.  As of the RC of AD FS, the settings are no longer stored in an external SQL Server or SQL Server Express database.  Instead, AD FS utilizes WID, which is simply SQL Server running with limited rights and visibility within Windows Server.</p>
<p>To connect, open SQL Server Management Studio (if you&#8217;re running this in Windows 2008, be sure to run it as an Administrator) and enter <strong>\\.\pipe\mssql$microsoft##ssee\sql\query</strong> as the server name.  Yes, that&#8217;s the connection string.  It seems like a bit of a hack getting into it, but this is well documented (it&#8217;s even on <a href="http://en.wikipedia.org/wiki/Windows_Internal_Database" target="_blank">Wikipedia</a>!) so don&#8217;t be afraid.</p>
<div id="attachment_210" class="wp-caption aligncenter" style="width: 426px"><a href="http://garrettvlieger.com/blog/wp-content/uploads/2009/12/wid.png"><img class="size-full wp-image-210" title="Windows Internal Database" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/12/wid.png" alt="" width="416" height="308" /></a><p class="wp-caption-text">Windows Internal Database Connection</p></div>
<h3>Updating the Endpoint</h3>
<p>Once you&#8217;ve connected, you can execute the script below to change the address of the Passive Federation endpoint.  A couple of notes first:</p>
<ol>
<li><strong>Standard disclaimer</strong>: This is a database update script so be sure that you&#8217;ve either backed up the database or made a copy of the settings so that you can roll back if necessary.</li>
<li>Set the @EndPointAddress variable to the desired address of your STS login page.</li>
<li>If you want to just see the configuration results before committing the changes, set the @Debug variable to 1 (true).</li>
</ol>
<pre>USE AdfsConfiguration
GO

--
-- Variables
--
DECLARE @Settings XML
DECLARE @EndPointAddress VARCHAR(255)
DECLARE @Debug BIT

-- Set the new Passive Federation location here(original='/adfs/ls')
SET @EndPointAddress = '/PassiveFederationSite'

-- Set this to true(1) if you only want to see the changes and not apply them
SET @Debug = 0

--
-- Convert the settings to XML data type
-- so we can more easily work with it.
--
SET @Settings =
(
  SELECT CAST(
    REPLACE(ServiceSettingsData, 'encoding="utf-8"', '')
	AS XML) AS x
  FROM IdentityServerPolicy.ServiceSettings
)

-- Update settings in XML
SET @Settings.modify('replace value of
(/ServiceSettingsData/SecurityTokenService/PassiveEndpoint/@Address)[1] with
sql:variable("@EndpointAddress")')

-- Convert new settings back to NVARCHAR
DECLARE @NewSettings NVARCHAR(MAX)

SET @NewSettings =
'' +
CAST(@Settings AS NVARCHAR(MAX))

IF @Debug = 1
BEGIN
  SELECT @NewSettings
  SELECT @Settings.query
    ('/ServiceSettingsData/SecurityTokenService/PassiveEndpoint')
END
ELSE
BEGIN
  DECLARE @ObjectId UNIQUEIDENTIFIER
  DECLARE @ServiceSettingsVersion BIGINT

  -- Get the latest settings data
  SELECT TOP 1 @ObjectId = ServiceSettingId,
    @ServiceSettingsVersion = ServiceSettingsVersion
  FROM IdentityServerPolicy.ServiceSettings
  ORDER BY LastUpdateTime DESC

  --
  -- Execute stored procedure to update settings
  --
  EXEC IdentityServerPolicy.UpdateServiceSettings @ObjectId,
    @NewSettings, @ServiceSettingsVersion
END</pre>
<h3>Some Notes on the Script</h3>
<ol>
<li>The removal of the &#8220;utf-8&#8243; encoding string is necessary for the configuration to be properly converted into the SQL Server XML type.  Without using the XML data type, this script would have been a lot more complex.</li>
<li>In addition to updating the configuration settings, the <strong>UpdateServiceSettings</strong> stored procedure increments the version column and updates the LastUpdatedTime column.  The version column (as far as I can tell) is only used for handling update conflicts.</li>
</ol>
<h3>Wrapping Up</h3>
<p>Once the script has been run, the changes will be instantaneous in AD FS.  There&#8217;s no need to restart the service.  To roll back to the original URI, just set @EndpointAddress to &#8220;/adfs/ls&#8221; and rerun the script!</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/12/modifying-the-ad-fs-2-0-passive-federation-endpoint/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Under the Hood: My other blog</title>
		<link>http://garrettvlieger.com/blog/2009/12/under-the-hood-my-other-blog/</link>
		<comments>http://garrettvlieger.com/blog/2009/12/under-the-hood-my-other-blog/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 18:07:37 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=199</guid>
		<description><![CDATA[
I&#8217;ve started writing for my company&#8217;s blog: Under the Hood.  I&#8217;ll still regularly post here to my blog, but definitely hop over there to check out the wide range of articles from my co-workers at Ironworks.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://underthehood.ironworks.com"><img class="size-medium wp-image-200 alignnone" title="Under the Hood" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/12/blogheader_underthehood-300x84.jpg" alt="Under the Hood" width="450" height="126" /></a></p>
<p>I&#8217;ve started writing for my company&#8217;s blog: <a href="http://underthehood.ironworks.com" target="_blank">Under the Hood</a>.  I&#8217;ll still regularly post here to my blog, but definitely hop over there to check out the wide range of articles from my co-workers at <a href="http://www.ironworks.com" target="_blank">Ironworks</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/12/under-the-hood-my-other-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Microsoft Names Its Products</title>
		<link>http://garrettvlieger.com/blog/2009/12/how-microsoft-names-its-products/</link>
		<comments>http://garrettvlieger.com/blog/2009/12/how-microsoft-names-its-products/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 16:25:56 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Identity Management]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=197</guid>
		<description><![CDATA[It could just be a coincidence, but I ran across this message board posting where somebody suggests that Microsoft name their product &#8220;Windows Identity Foundation&#8221;.  However, this was three years ago!  It&#8217;s nice that somebody followed up recently with a little &#8220;congratulations on your suggestion&#8221; posting, but I wonder if the original poster even realizes [...]]]></description>
			<content:encoded><![CDATA[<p>It could just be a coincidence, but I ran across <a href="http://social.msdn.microsoft.com/Forums/en-US/windowscardspace/thread/d128c601-73ed-4494-bdc2-9f56bd5ceba4/" target="_blank">this message board posting</a> where somebody suggests that Microsoft name their product &#8220;Windows Identity Foundation&#8221;.  However, this was three years ago!  It&#8217;s nice that somebody followed up recently with a little &#8220;congratulations on your suggestion&#8221; posting, but I wonder if the original poster even realizes that his suggestion is now the official name for the identity framework that Microsoft just released.</p>
<p>I will go ahead and throw out that Microsoft should rename its ORM solution from Entity Framework to Windows Data Access Foundation (WDAF).  You heard it here first!</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/12/how-microsoft-names-its-products/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Identity Foundation RTM is Here</title>
		<link>http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rtm-is-here/</link>
		<comments>http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rtm-is-here/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 19:05:18 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[Active Directory Federation Services]]></category>
		<category><![CDATA[Geneva Server]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[windows identity foundation]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=187</guid>
		<description><![CDATA[
Less than two weeks after the release of the Windows Identity Foundation (WIF) RC, the final RTM version has been pushed out!
Check out the official announcement on Vibro.NET or download it directly from the Microsoft site.
Still no word on any new releases for Active Directory FS v2 (Geneva Server).
]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-154" href="http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rc-available/net-wif_h_rgb2_thumb/"><img class="alignleft size-medium wp-image-154" title="WIF" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/11/NET-WIF_h_rgb2_thumb-300x56.jpg" alt="WIF" width="300" height="56" /></a></p>
<p>Less than two weeks after the release of the Windows Identity Foundation (WIF) RC, the final RTM version has been pushed out!</p>
<p>Check out the <a href="http://blogs.msdn.com/vbertocci/archive/2009/11/17/windows-identity-foundation-rtm.aspx" target="_blank">official announcement on Vibro.NET</a> or <a href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx" target="_blank">download it directly from the Microsoft site</a>.</p>
<p>Still no word on any new releases for Active Directory FS v2 (Geneva Server).</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rtm-is-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architecture versus Code</title>
		<link>http://garrettvlieger.com/blog/2009/11/architecture-versus-code/</link>
		<comments>http://garrettvlieger.com/blog/2009/11/architecture-versus-code/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 19:54:47 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[architecture astronauts]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[grady booch]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=162</guid>
		<description><![CDATA[In a recent interview, Grady Booch responded to a question regarding people that are skeptical about overblown architectures with a very succinct and ultimately dead-on answer:
The most important artifact any development team produces is raw, running, naked code.  Everything else is secondary or tertiary.  However, that is not to say that these other [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://www.informit.com/articles/article.aspx?p=1405569" target="_blank">recent interview</a>, <a href="http://en.wikipedia.org/wiki/Grady_Booch" target="_blank">Grady Booch</a> responded to a question regarding people that are skeptical about overblown architectures with a very succinct and ultimately dead-on answer:</p>
<blockquote><p>The most important artifact any development team produces is raw, running, naked code.  Everything else is secondary or tertiary.  However, that is not to say that these other things are inconsequential.  Rather, our models, our processes, our design patterns help one to build the right thing at the right time for the right stakeholders.</p>
<p>Yet, while code is king, one must realize that it is also a servant, for it in the end must serve some constituency, deliver some measurable value.  Just as I loathe architecture astronauts—people who have no skin in the game, people who are so divorced from the reality of executables that they melt in the sight of a line of code—I also loathe code bigots who are so blinded by their own prowess and tools that they lose sight of why or for whom they are toiling.  Design for design&#8217;s sake is meaningless; code for code&#8217;s sake may be fun but it is also meaningless.</p>
<p>Recognize also that there are very real tensions between doing the right thing in the short term and doing the right thing for the long term.  Code centricity tends to draw you to the former; architectual centricity tends to draw you to the latter, and honestly, neither pole is correct, but rather it is the dance between the two for which a particular team with a specific culture working in a given domain must find balance.</p></blockquote>
<div id="attachment_163" class="wp-caption alignright" style="width: 310px"><a rel="attachment wp-att-163" href="http://garrettvlieger.com/blog/2009/11/architecture-versus-code/astronauts_tool_bag/"><img class="size-full wp-image-163" title="Architecture Astronaut" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/11/astronauts_tool_bag.jpg" alt="How's the weather up there?" width="300" height="300" /></a><p class="wp-caption-text">How&#39;s the weather up there?</p></div>
<p>This quote probably hits home for many developers.  There needs to be a balance between using an architecture to improve the process of software development versus developing working code that does what the client expects.</p>
<p>Trade-offs are usually made in projects due to budget, time, or resource constraints, but the chosen tools and architecture (whether custom built or based on an existing pattern) should at least exhibit these features:</p>
<ol>
<li><span style="background-color: #ffffff;"><b>The architecture should lend itself to scalability and maintainability.</b>  The final application will need to grow and other developers will need to take over programming duties.  If your architecture is so rigid and convoluted that it can&#8217;t grow, it probably needs to be redesigned.<br />
</span><br/></li>
<li><span style="background-color: #ffffff;"><b>The methodology and design patterns should not be overly complex.</b>  While a learning curve is acceptable, if it takes an inordinate amount of valuable project time to learn the ins-and-outs of the architecture, it may not be worth using, especially for smaller projects.<br />
</span><br/></li>
<li><span style="background-color: #ffffff;"><b>The architecture must help solve the problem at hand.</b>  As Joel Splosky described in his <a href="http://www.joelonsoftware.com/articles/fog0000000018.html" target="_blank">diatribe</a> against &#8220;Architecture Astronauts&#8221;, tools are just that &#8212; tools to help build a solution.  People have a tendency to separate the business and technical problem from the underlying architecture, favoring what they know or what they view as the &#8220;acceptable&#8221; way to do things (&#8220;If all you have is a hammer, every problem looks like a nail&#8221;).<br />
</span><br/></li>
<li><span style="background-color: #ffffff;"><b>The architecture should promote best practices and lead programmers into developing in a structured manner.</b>  In <a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670" target="_blank">Code Complete</a>, Steve McConnell describes the role of good architecture:<br/><br />
<blockquote><p>A well thought-out architecture provides the structure needed to maintain a system&#8217;s conceptual integrity from the top levels down to the bottom.  It provides guidance to programmers &#8212; at a level of detail appropriate to the skills of the programmers and to the job at hand&#8230;</p>
<p>Good architecture makes construction easy.  Bad architecture makes construction almost impossible.</p></blockquote>
<p></span></li>
</ol>
<p>Grady Booch summed up the balance between architecture and working code pretty well, and this is coming from a man that has been at forefront of object-oriented design.  There are no hard and fast rules about which design to use in which situation, and this is why a good deal of thought needs to be given in the architectural phase of any project.</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/11/architecture-versus-code/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Windows Identity Foundation RC Available</title>
		<link>http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rc-available/</link>
		<comments>http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rc-available/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 20:49:23 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[geneva framework]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[wif]]></category>
		<category><![CDATA[windows identity foundation]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=151</guid>
		<description><![CDATA[
The release candidate (RC) for Windows Identity Foundation (formerly the Geneva Framework) is now available for download.
The latest release has several new features and fixes:

Refactored WSTrustClient as WSTrustChannelFactory and WSTrustChannel
Extended tracing functionality for better diagnosibility
Unifying SAML end points through WrappedTokenAuthenticator
Crypto agility
Bootstrap tokens availability through ClaimsIdentity
Security token cache updates to support session mode for ASP.NET cookies
FedUtil [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-154" href="http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rc-available/net-wif_h_rgb2_thumb/"><img class="size-medium wp-image-154 alignleft" title="WIF" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/11/NET-WIF_h_rgb2_thumb-300x56.jpg" alt="WIF" width="300" height="56" /></a></p>
<p>The release candidate (RC) for Windows Identity Foundation (formerly the Geneva Framework) is now <a href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx">available for download</a>.</p>
<p>The latest release has several new features and fixes:</p>
<ul>
<li><span style="background-color: #ffffff;">Refactored WSTrustClient as WSTrustChannelFactory and WSTrustChannel</span></li>
<li><span style="background-color: #ffffff;">Extended tracing functionality for better diagnosibility</span></li>
<li><span style="background-color: #ffffff;">Unifying SAML end points through WrappedTokenAuthenticator</span></li>
<li><span style="background-color: #ffffff;">Crypto agility</span></li>
<li><span style="background-color: #ffffff;">Bootstrap tokens availability through ClaimsIdentity</span></li>
<li><span style="background-color: #ffffff;">Security token cache updates to support session mode for ASP.NET cookies</span></li>
<li><span style="background-color: #ffffff;">FedUtil leveraged for control-based applications</span></li>
</ul>
<p>The full list of changes between Beta 2 and the RC is available in a <a href="http://download.microsoft.com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/WindowsIdentityFoundation-ChangesBetweenBeta2AndRC.pdf" target="_blank">whitepaper</a>.</p>
<p>To go along with this new update, there are also new versions of the <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=c3e315fa-94e2-4028-99cb-904369f177c0" target="_blank">Identity Training Kit</a>, the <a href="http://code.msdn.microsoft.com/FabrikamShipping" target="_blank">FabrikamShipping example application</a>, and the <a href="http://code.msdn.microsoft.com/ClaimsDrivenControl" target="_blank">Claims-Driven Modifier Control</a> (which is really nice if you haven&#8217;t tried it out).</p>
<p>There is no word on any new versions of Active Directory FS (Geneva Server) and no update on the final release date, but the word is that they are still shooting for RTM this quarter.</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/11/windows-identity-foundation-rc-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 10 Upcoming Microsoft Releases That Developers Should be Excited About</title>
		<link>http://garrettvlieger.com/blog/2009/10/top-10-upcoming-microsoft-releases-that-developers-should-be-excited-about/</link>
		<comments>http://garrettvlieger.com/blog/2009/10/top-10-upcoming-microsoft-releases-that-developers-should-be-excited-about/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 14:18:57 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[entity framework]]></category>
		<category><![CDATA[f#]]></category>
		<category><![CDATA[geneva]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[visual studio 2010]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[wf]]></category>
		<category><![CDATA[windows communication foundation]]></category>
		<category><![CDATA[windows workflow foundation]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=101</guid>
		<description><![CDATA[1. Visual Studio 2010
It all starts with the IDE.  While the tool has been built to provide a development environment for the new .NET 4.0 framework, there are several other features that make Visual Studio 2010 something to look forward to:

Microsoft has cleaned up the user interface a bit, which will be the most [...]]]></description>
			<content:encoded><![CDATA[<h3>1. Visual Studio 2010</h3>
<p>It all starts with the IDE.  While the tool has been built to provide a development environment for the new .NET 4.0 framework, there are several other features that make Visual Studio 2010 something to look forward to:</p>
<ul>
<li>Microsoft has cleaned up the user interface a bit, which will be the most obvious change when you first run VS 2010.  For the first time, Visual Studio is now a full-fledged WPF application.
<div id="attachment_103" class="wp-caption aligncenter" style="width: 573px"><a rel="attachment wp-att-103" href="http://garrettvlieger.com/blog/2009/10/top-10-upcoming-microsoft-releases-that-developers-should-be-excited-about/vs2010/"><img class="size-large wp-image-103" title="Visual Studio 2010" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/10/vs2010-1024x569.PNG" alt="The new welcome screen in Visual Studio 2010" width="563" height="312" /></a><p class="wp-caption-text">The new welcome screen in Visual Studio 2010</p></div></li>
<li>There are several enhancements to better support new languages such as F# and parallel programming.</li>
<li>Most exciting to many developers will be the full IntelliSense support for JavaScript (finally!)</li>
<li>A new visual editor for XAML-based Silverlight applications has been added.  It&#8217;s no longer necessary to use Microsoft Blend to do front-end visual design, which is a big win for Silverlight developers.</li>
<li>Several tools have been either added or enriched: new built-in modeling capabilities, better testing options, and some really nice improvements to TFS.</li>
</ul>
<p>I&#8217;ve had the beta version installed for a while now, and I would have used it more had it not blue-screened my computer a few times.  Regardless, the best development IDE out there has added a number of nice additions to keep it ahead of the game.</p>
<p><em>Projected Release:</em> March 22, 2010<br />
<em> Further Reading</em>: <a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx">http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx</a></p>
<h3>2. .NET 4.0/C# 4.0</h3>
<p>There is a laundry list of new features in the upcoming .NET Framework 4.0 and C# 4.0 (VB.NET has new features as well, but mostly they either mimic C# enhancements or add abilities that were already in C#).  The .NET Framework has numerous additions, which are detailed throughout this list.</p>
<p>C# adds several new abilities that I&#8217;m sure a lot of developers can&#8217;t wait to start using, namely:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/dd264736(VS.100).aspx">Dynamically typed objects</a></li>
<li>Optional parameters &#8211; Visual Basic has had this forever and now C# finally adds this ability!</li>
<li>Better interoperability with COM objects &#8211; Not that anyone wants to deal with COM anymore, but its out there.</li>
</ul>
<p><em>Projected Release</em>: March 22, 2010<br />
<em> Further Reading</em>: <a href="http://msdn.microsoft.com/en-us/netframework/default.aspx">http://msdn.microsoft.com/en-us/netframework/default.aspx</a></p>
<h3>3. Windows Identity Foundation/Active Directory Federation Services (formerly codename &#8220;Geneva&#8221;)</h3>
<p>The new identity offerings from Microsoft present a means for ASP.NET developers to jump into the world of claims-based security and federated authentication.  While the approach isn&#8217;t new, the tools to make all of this relatively seamless in ASP.NET are a significant advancement for enterprises.  See my <a href="http://garrettvlieger.com/blog/2009/10/a-mind-shift-on-identity-management-with-geneva/">previous posting</a> about some of the advantages that come along with this shift in security thinking.</p>
<p><em>Projected Release</em>: Windows Identity Foundation: Released, Active Directory Federation Services: Q1 2010<br />
<em> Further Reading</em>: <a href="http://msdn.microsoft.com/en-us/security/aa570351.aspx">http://msdn.microsoft.com/en-us/security/aa570351.aspx</a></p>
<h3>4. Windows Azure Platform</h3>
<p><a rel="attachment wp-att-115" href="http://garrettvlieger.com/blog/2009/10/top-10-upcoming-microsoft-releases-that-developers-should-be-excited-about/azure/"><img class="size-full wp-image-115 alignnone" title="azure" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/10/azure.png" alt="azure" width="280" height="74" /></a></p>
<p><em>The Cloud &#8211;</em> we&#8217;ve been hearing about it in articles, TV commercials, and just about everywhere.  Microsoft will be doing the hard sell on their cloud-based services platform in the coming months with the release of Azure.</p>
<p>What does it mean to developers?  Well, for one it&#8217;s part of the ongoing move to Internet-based services.  As architects plan out their systems, it may not be a matter of installing a new SQL Server or setting up an Active Directory server.  Instead, the company may opt to host their systems on the Azure platform, which will present its own set of challenges dealing with latency, network concerns, and system interoperability.  [Insert your own rain cloud analogy here.]
<p><em>Projected Release</em>: November 2009<br />
<em> Further Reading</em>: <a href="http://www.microsoft.com/windowsazure/">http://www.microsoft.com/windowsazure/</a></p>
<h3>5. ASP.NET MVC 2</h3>
<p>No, MVC doesn&#8217;t stand for Microsoft Voluminous Code, although some web forms developers may feel that way after they first get into ASP.NET MVC.  Since MVC ditches server controls, some long-time ASP.NET programmers may see MVC as adding a lot of work and extra code.  While this fear is somewhat unjustified, the next version of MVC hopes to ease the transition to MVC with some nice improvements.</p>
<p><em>Projected Release</em>: March 22, 2010<br />
<em> Further Reading</em>: <a href="http://aspnet.codeplex.com/wikipage?title=Road%20Map&amp;referringTitle=MVC">http://aspnet.codeplex.com/wikipage?title=Road%20Map&amp;referringTitle=MVC</a></p>
<h3>6. Entity Framework 4.0</h3>
<p>With the ADO.NET Entity Framework, Microsoft stepped up to bat in the ORM (Object Relational Mapping) marketplace, and according to many people, swung and missed.  With NHibernate, .netTiers, and their own LINQ to SQL already out there as better ORM options, Microsoft&#8217;s first version of the Entity Framework left a lot to be desired.</p>
<p>Thankfully, Microsoft has taken the hint and the next version of the Entity Framework fills in a lot of gaps.  For one, you can now easily customize the code generated by the tool using T4 templates.</p>
<p>Another complaint was the ability to deal with disconnected entity objects in an n-tier architecture.  Since the Entity Framework relies on the state of an object to determine whether a record should be updated, deleted, or inserted; dealing with stateless entity objects passed over a WCF service was a bit of a chore.  Microsoft corrects this with &#8220;self-tracking&#8221; entities that will set their own state on the client side.</p>
<p><em>Projected Release</em>: Q1 2010<br />
<em> Further Reading</em>: <a href="http://blogs.msdn.com/efdesign/">http://blogs.msdn.com/efdesign/</a></p>
<h3>7. WCF 4, WF 4, and Windows Server &#8220;Dublin&#8221;</h3>
<p>Yes, another European city codename for Microsoft.  With the .NET 4.0 framework, Microsoft has made significant improvements to Windows Communication Foundation (WCF) and Windows Worflow Foundation (WF).  &#8221;Dublin&#8221; meanwhile is a set of enhancements to Windows Server and IIS that provides a standard host for WCF and WF applications.</p>
<p>One of the biggest headaches with WCF is configuration.  The range of web.config or app.config settings that need to be specified for WCF negates the ease with which the rest of a WCF service can be developed.  With .NET 4.0, WCF now has a default endpoint configuration so you don&#8217;t actually need to configure anything if you don&#8217;t need to.  In addition, WCF now supports a more simplified REST interface.  This was available before with the WCF REST Starter Kit, but the new version of WCF makes this a lot easier.</p>
<p>On the Workflow side of things, Microsoft has greatly improved the visual designer for WF in Visual Studio while also completely revamping the programming model to be more robust.  They&#8217;ve also made enhancements to the interaction between WCF and WF, which brings both of these technologies more in line with each other.</p>
<p><em>Projected Release</em>: Q1 2010<br />
<em> Further Reading</em>: <a href="http://www.microsoft.com/NET/Dublin.aspx">http://www.microsoft.com/NET/Dublin.aspx</a></p>
<h3>8. F#</h3>
<p>Like many developers out there, I got my first taste of functional programming in college with LISP, and that was enough to scare me away forever.  Recently however, there&#8217;s been a resurgence in functional programming interest, stemming partly from the introduction of LINQ in .NET and leading to the development of F#.  What started out as a research project within Microsoft is now the fully-realized F# language that will be available with Visual Studio 2010.</p>
<p>Here is a quick sample program in F#:</p>
<blockquote><p><code>(* Sample Windows Forms Program *)</code></p>
<p><code>(* We need to open the Windows Forms library *)<br />
open System.Windows.Forms</code></p>
<p><code>(* Create a window and set a few properties *)<br />
let form = new Form(Visible=true, TopMost=true, Text="Welcome to F#")</code></p>
<p><code>(* Create a label to show some text in the form *)<br />
let label =<br />
let temp = new Label()<br />
let x = 3 + (4 * 5)<br />
(* Set the value of the Text*)<br />
temp.Text &amp;lt;- sprintf "x = %d" x<br />
(* Remember to return a value! *)<br />
temp</code></p>
<p><code>(* Add the label to the form *)<br />
do form.Controls.Add(label)</code></p>
<p><code> </code><code>(* Finally, run the form *)<br />
[]<br />
do Application.Run(form)</code></p></blockquote>
<p>So why consider F# over object-oriented languages such as C# and Java?  That can be better summed up by someone else so check out <a href="http://www.hanselman.com/blog/TheWeeklySourceCode34TheRiseOfF.aspx">Scott Hanselman&#8217;s write-up</a>.</p>
<p><em>Projected Release</em>: March 22, 2010<br />
<em> Further Reading</em>: <a href="http://msdn.microsoft.com/en-us/fsharp/default.aspx">http://msdn.microsoft.com/en-us/fsharp/default.aspx</a></p>
<h3>9. ASP.NET AJAX v4.0</h3>
<p>If you do web development these days, odds are that you&#8217;re designing much better user interfaces than were written 5 years ago before the advent of AJAX and rich JavaScript libraries like jQuery.  Within ASP.NET web forms, the ability to do asynchronous operations gets more complicated when you&#8217;re dealing with ViewState and generated HTML elements.  To remedy this, Microsoft introduced ASP.NET AJAX in 2007.</p>
<p>The previous versions of ASP.NET AJAX used the UpdatePanel control to define a region of &#8220;AJAX-enabled&#8221; content that could be replaced using asynchronous updates.  The data sent back and forth in these calls was a large block of ViewState and HTML content, which is clearly inefficient.  With v4.0, ASP.NET AJAX introduces client-side templating, which provides an easier and simpler method of displaying dynamic data.  Take a look at this <a href="http://encosia.com/2008/07/23/sneak-peak-aspnet-ajax-4-client-side-templating/">overview</a> to get an idea of how this all works and how this brings pure AJAX and JSON data interaction into ASP.NET AJAX.</p>
<p><em>Projected Release</em>: March 22, 2010<br />
<em>Further Reading</em>: <a href="http://aspnet.codeplex.com/wikipage?title=AJAX&amp;ProjectName=aspnet">http://aspnet.codeplex.com/wikipage?title=AJAX&amp;ProjectName=aspnet</a></p>
<h3>10. .NET RIA Services</h3>
<blockquote><p>Microsoft .NET RIA (Rich Internet Application) Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. The RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations. It also provides end-to-end support for common tasks such as data<strong> </strong>validation, authentication and roles by integrating with Silverlight components on the client and ASP.NET on the mid-tier.</p></blockquote>
<p>Put simply, .NET RIA bridges the gap between Silverlight and data access by providing a middle tier layer for defining business and application logic.</p>
<p><em>Projected Release</em>: Q1 2010<br />
<em>Further Reading</em>: <a href="http://go.microsoft.com/fwlink/?LinkID=144687">http://go.microsoft.com/fwlink/?LinkID=144687</a></p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/10/top-10-upcoming-microsoft-releases-that-developers-should-be-excited-about/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Inherent Flaw in Third-Party Authentication</title>
		<link>http://garrettvlieger.com/blog/2009/10/the-inherent-flaw-of-third-party-authentication/</link>
		<comments>http://garrettvlieger.com/blog/2009/10/the-inherent-flaw-of-third-party-authentication/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 21:23:16 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[facebook connect]]></category>
		<category><![CDATA[flaws]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[third-party authentication]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=82</guid>
		<description><![CDATA[For my current project, I&#8217;ve been researching Facebook Connect.  As I&#8217;ve been digging into it, I&#8217;ve been thinking about the huge vulnerability in using third-party authentication methods such as OpenId, Live ID, and Facebook Connect.  The problem, which people have highlighted in the past, is that you are now reliant upon another company to be [...]]]></description>
			<content:encoded><![CDATA[<p>For my current project, I&#8217;ve been researching Facebook Connect.  As I&#8217;ve been digging into it, I&#8217;ve been thinking about the huge vulnerability in using third-party authentication methods such as OpenId, Live ID, and Facebook Connect.  The problem, which people have highlighted in the past, is that you are now reliant upon another company to be available for your users to log in to your site.</p>
<p>The reality of this situation has been brought home over the past week for me.  I’m going on day 6 of not having access to Facebook.  The login page just tells me that my account is “temporarily unavailable due to site maintenance” and it should be back “within a few hours.”  Easy means of support is pretty much unavailable, which is sort of understandable for a site that boasts more than 300 million active users (and growing).  Unfortunately, there’s nobody to contact for any sort of problem, and all I can find is a few blogs where other people are having the same problem.</p>
<div id="attachment_83" class="wp-caption aligncenter" style="width: 562px"><a rel="attachment wp-att-83" href="http://garrettvlieger.com/blog/2009/10/the-inherent-flaw-of-third-party-authentication/fb/"><img class="size-full wp-image-83" title="Facebook login" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/10/fb.JPG" alt="Just a few more hours..." width="552" height="305" /></a><p class="wp-caption-text">Just a few more hours...</p></div>
<p>So imagine the hypothetical case that some of your users had registered for your site using Facebook Connect, they normally come in and simply login using their Facebook ID on the Facebook login page, and over time they&#8217;ve entered a wealth of information under this account.  Now all of a sudden, they can&#8217;t get in to your site since Facebook is &#8220;undergoing maintenance&#8221; for days on end.  With Facebook being unavailable for support, they&#8217;ll more than likely turn to your company for answers.  Unfortunately, Facebook, as they say, has no skin in the game so there is no motivation for them to fix the problem.</p>
<p>Just a few things to think about when relying on a third party for authenticating your users.  It adds convenience when all is well, but it could mean a lot of unhappy users if something breaks.</p>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/10/the-inherent-flaw-of-third-party-authentication/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Mind-Shift on Identity Management with Geneva</title>
		<link>http://garrettvlieger.com/blog/2009/10/a-mind-shift-on-identity-management-with-geneva/</link>
		<comments>http://garrettvlieger.com/blog/2009/10/a-mind-shift-on-identity-management-with-geneva/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 03:09:03 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[Active Directory Federation Services]]></category>
		<category><![CDATA[ADFS v2]]></category>
		<category><![CDATA[Geneva Server]]></category>
		<category><![CDATA[windows identity foundation]]></category>

		<guid isPermaLink="false">http://garrettvlieger.com/blog/?p=63</guid>
		<description><![CDATA[With the pending introduction of Microsoft&#8217;s Geneva Framework and Geneva Server (now officially named Windows Identify Foundation and Active Directory Federation Services, respectively), a claims-based and federated security model is now available to the .NET world.  The use of SAML-based authentication tokens distributed by Secure Token Servers (STS&#8217;s) is primed to be the next step [...]]]></description>
			<content:encoded><![CDATA[<p>With the pending introduction of Microsoft&#8217;s Geneva Framework and Geneva Server (now officially named Windows Identify Foundation and Active Directory Federation Services, respectively), a claims-based and federated security model is now available to the .NET world.  The use of SAML-based authentication tokens distributed by Secure Token Servers (STS&#8217;s) is primed to be the next step in providing a more simplified identity management scheme throughout organizations and beyond into the &#8220;cloud&#8221; of Azure and Internet-based systems.</p>
<div id="attachment_69" class="wp-caption aligncenter" style="width: 482px"><a rel="attachment wp-att-69" href="http://garrettvlieger.com/blog/2009/10/a-mind-shift-on-identity-management-with-geneva/geneva/"><img class="size-full wp-image-69" title="geneva" src="http://garrettvlieger.com/blog/wp-content/uploads/2009/10/geneva.PNG" alt="Claims-based authentication scenario" width="472" height="434" /></a><p class="wp-caption-text">Claims-based authentication scenario</p></div>
<p>If you haven&#8217;t been exposed to the concept of claims-based security, it&#8217;s a bit of a mind-shift from how application rights and user properties have been typically implemented so it may take some time to fully grasp.  A claim, to put it simply, is any attribute that can be ascribed to a user (or any resource).  For example, a user&#8217;s claims may consist of his name, birth date, gender, and role within an organization.</p>
<p>What makes this different from traditional role-based security is that these claims are authenticated by a trusted third-party.  One of the best analogies is to think of a person going to buy alcohol at a bar.  The bartender must prove that the person is of legal age so he asks for an authenticated record from a trusted third-party, which in this case is a driver&#8217;s license from the DMV.  The claim is that this person is over 21 years old, and the identity provider is the Department of Motor Vehicles.</p>
<h3>A Boon to Developers and Organizations</h3>
<p>OK, so this is all well and good but how does this make developing applications easier?  The short answer is that claims alone don&#8217;t make things much easier, but what does simplify matters is the use of federated authentication.  In our previous example, the bar knew nothing about the person buying a drink.  There was no big filing cabinet with everybody&#8217;s name and birth records stored in the back room of the bar (at least you hope not).  The problem is that this is how many applications work today.  Each application stores off its own set of users and profile data, and therefore, the application (and consequently, the application developers) must be responsible for authenticating users.</p>
<p>By utilizing federation, the job of validating that a user is who he claims to be is now handed off to a third party, and a trust is established between our application (the relying party, or RP).  If our identity provider (IP) says that Joe Smith is really Joe Smith, we can trust that this is true.  Immediately, you can probably see that this is a boon for developers everywhere, who are tired of creating user login pages and databases.  In addition, this now enables Single Sign-On (SSO) within a network of applications that share the same IP.</p>
<h3>Putting it All Together</h3>
<p>Now that you can probably see how claims and federated security can be of benefit, the next question is how all of this works within the current world of application security.  The good news is that Microsoft seems to have done an admirable job of building on top of existing technologies (e.g., Active Directory and ASP.NET authentication) and providing flexibility to leverage existing security mechanisms (e.g., OpenID, Live ID, etc.).</p>
<p>The Geneva Framework is a set of assemblies that forms the foundation of the entire security suite.  Using the Framework (otherwise known as Windows Identity Foundation, or WIF), developers can claims-enable their ASP.NET applications with just a handful of configuration settings.  In addition, WIF can be used to create a custom Secure Token Server (STS) that can perform user authentication and claims look-ups using any technique imaginable.  This open foundation will encourage developers and IT organizations to move towards this model.  In addition, Geneva Server is a robust and freely available STS that can be rolled out within an organization, making federated security a reality in fairly short order.</p>
<h3><strong>Further Reading</strong></h3>
<p>This discussion barely scratches the surface and depth of Geneva so I would encourage you to read more on the blogs and Microsoft sites out there:</p>
<ul>
<li><a title="Vibro.NET" href="http://blogs.msdn.com/vbertocci/" target="_blank">Vibro.Net</a> &#8211; Vittorio Bertocci is a Microsoft architect/evangelist and a prolific blogger on Geneva</li>
<li><a title="Geneva Whitepaper" href="http://download.microsoft.com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/GenevaFramework-WhitepaperForDevelopers-Beta2.pdf" target="_blank">Geneva Framework Whitepaper for Developers</a></li>
<li><a title="Identity Management" href="http://msdn.microsoft.com/en-us/security/aa570351.aspx" target="_blank">Microsoft Identity Management Developer Center</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://garrettvlieger.com/blog/2009/10/a-mind-shift-on-identity-management-with-geneva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
