<?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>Life as a SharePoint Consultant</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/</link><description>This is my blog on the SharePoint and Office 365 related work I do for Microsoft Services NL</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.19849 (Build: 5.6.583.19849)</generator><item><title>Federated Search - Twitter</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/11/29/federated-search-twitter.aspx</link><pubDate>Tue, 29 Nov 2011 09:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10242135</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10242135</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10242135</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/11/29/federated-search-twitter.aspx#comments</comments><description>Wanted to share this little sample federated search location with you. Twitter has a search site where you can search for tweets: http://search.twitter.com It also has a atom feed for results: http://search.twitter.com/search.atom?q={searchTerms} SharePoint...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/11/29/federated-search-twitter.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10242135" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Social/">Social</category></item><item><title>October 2011 CU for SharePoint 2010</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/11/02/october-2011-cu-for-sharepoint-2010.aspx</link><pubDate>Wed, 02 Nov 2011 16:35:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10232546</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10232546</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10232546</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/11/02/october-2011-cu-for-sharepoint-2010.aspx#comments</comments><description>Short version of it: 
 
 Download SharePoint Foundation 2010 October 2011 CU 
 Download SharePoint Server 2010 October 2011 CU 
 
 Want to know more? 
 
 KB 2596508 - SharePoint Foundation 2010 
 KB 2596505 - SharePoint Server 2010 
 Updates...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/11/02/october-2011-cu-for-sharepoint-2010.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10232546" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category></item><item><title>Office 365 and Exchange 2010 On-premises</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/09/office-365-and-exchange-2010-on-premises.aspx</link><pubDate>Sat, 09 Jul 2011 09:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10184834</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10184834</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10184834</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/09/office-365-and-exchange-2010-on-premises.aspx#comments</comments><description>One very cool feature for Office 365 has to be the co-existance support with your Exchange 2010 on-premises. 
 There is now a tool available to help you set this up!...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/09/office-365-and-exchange-2010-on-premises.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10184834" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Office+365/">Office 365</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Exchange+2010/">Exchange 2010</category></item><item><title>New SharePoint 2010 Storage recommendations</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/09/new-sharepoint-2010-storage-recommendations.aspx</link><pubDate>Sat, 09 Jul 2011 09:13:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10184833</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10184833</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10184833</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/09/new-sharepoint-2010-storage-recommendations.aspx#comments</comments><description>We have updated our Software boundaries and limits for SharePoint 2010 with SP1 ! 
 View the anouncement on the product group blog : 
 "If this new guidance is followed SharePoint can support up to 4 TB of data in all usage scenarios and has no imposed...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/09/new-sharepoint-2010-storage-recommendations.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10184833" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/TechNet/">TechNet</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Guidance/">Guidance</category></item><item><title>SharePoint 2010 SP1</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/04/sharepoint-2010-sp1.aspx</link><pubDate>Mon, 04 Jul 2011 14:19:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10182878</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10182878</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10182878</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/04/sharepoint-2010-sp1.aspx#comments</comments><description>So we have released the first Service Pack for SharePoint 2010, both Foundation and Server. 
 You can find all of the details listed here &amp;lt;-- must read this first !!! 
 Update Foundation first: SharePoint Foundation 2010 Service Pack 1 Service Pack...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/07/04/sharepoint-2010-sp1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10182878" width="1" height="1"&gt;</description></item><item><title>Driving SharePoint Adoption </title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/06/22/driving-sharepoint-adoption.aspx</link><pubDate>Wed, 22 Jun 2011 08:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10177718</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10177718</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10177718</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/06/22/driving-sharepoint-adoption.aspx#comments</comments><description>Help is underway for those of us driving adoption of SharePoint. 
 A new site launched: http://iusesharepoint.com/ 
 And with it a SharePoint Adoption Kit 
 "Ah, driving adoption. We know it can be tough to get a team to change its ways. But you don...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/06/22/driving-sharepoint-adoption.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10177718" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Adoption/">Adoption</category></item><item><title>Technet Content on SharePoint 2010 "Best Practices"</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/06/20/technet-content-on-sharepoint-2010-quot-best-practices-quot.aspx</link><pubDate>Mon, 20 Jun 2011 12:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10176941</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10176941</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10176941</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/06/20/technet-content-on-sharepoint-2010-quot-best-practices-quot.aspx#comments</comments><description>Head over to TechNet on some great content on SharePoint 2010 Operational Excellence : 
 And check at the Best Practices Resouce Center for SharePoint 2010 :...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/06/20/technet-content-on-sharepoint-2010-quot-best-practices-quot.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10176941" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/TechNet/">TechNet</category></item><item><title>MOSS 2007 and ADFS</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/18/moss-2007-and-adfs.aspx</link><pubDate>Wed, 18 May 2011 07:10:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10165705</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10165705</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10165705</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/18/moss-2007-and-adfs.aspx#comments</comments><description>Found this today, might be usefull for people who are "stuck" on Microsoft Office SharePoint Server 2007 but want to use ADFS2 or Federation. 
 Microsoft Federation Extensions for SharePoint 3.0 Release to Web 
 http://www.microsoft.com/downloads/en...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/18/moss-2007-and-adfs.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10165705" width="1" height="1"&gt;</description></item><item><title>Sample code for a Sandboxed Solution for Office 365 using search.asmx with jQuery</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/06/sample-code-for-a-sandboxed-solution-for-office-365-using-search-asmx-with-jquery.aspx</link><pubDate>Fri, 06 May 2011 12:17:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10161763</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10161763</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10161763</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/06/sample-code-for-a-sandboxed-solution-for-office-365-using-search-asmx-with-jquery.aspx#comments</comments><description>Wanted to create a sample that: Runs on SharePoint 2010 Uses the Search.asmx webservice Can run inside the sandbox Uses jQuery Can run on Office 365 What to create? A webpart that shows all site collections you have access to! Here is the output of the...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/06/sample-code-for-a-sandboxed-solution-for-office-365-using-search-asmx-with-jquery.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10161763" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category></item><item><title>Office 365 Developer Training Kit online</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/office-365-developer-training-kit-online.aspx</link><pubDate>Mon, 02 May 2011 15:38:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10160034</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10160034</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10160034</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/office-365-developer-training-kit-online.aspx#comments</comments><description>Just saw this over at the SharePoint Online Developer Resource Center : 
 Office 365 Developer Training Kit Use this online or downloadable training course to help you get started building cloud-based communication and collaboration solutions for Office...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/office-365-developer-training-kit-online.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10160034" width="1" height="1"&gt;</description></item><item><title>Announcing the SharePoint Diagnostic Studio </title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/announcing-the-sharepoint-diagnostic-studio.aspx</link><pubDate>Mon, 02 May 2011 10:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10159970</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10159970</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10159970</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/announcing-the-sharepoint-diagnostic-studio.aspx#comments</comments><description>Bill Baer posted an announcement over at the the sharepoint blog : 
 " In the new version of the SharePoint Administration Toolkit we&amp;rsquo;ve introduced a new and revised SharePoint Diagnostics Studio that represents a complete departure from previous...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/announcing-the-sharepoint-diagnostic-studio.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159970" width="1" height="1"&gt;</description></item><item><title>April 2011 CU for SharePoint 2007 and 2010 has been released</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/april-2011-cu-for-sharepoint-2007-and-2010-has-been-released.aspx</link><pubDate>Mon, 02 May 2011 10:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10159966</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10159966</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10159966</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/april-2011-cu-for-sharepoint-2007-and-2010-has-been-released.aspx#comments</comments><description>Read more here: 
 http://blogs.technet.com/b/stefan_gossner/archive/2011/04/27/april-2011-cu-for-sharepoint-2007-and-2010-has-been-released-today.aspx 
 
 KB 2512783 - WSS 3.0 
 KB 2512782 - MOSS 2007 
 KB 2512804 - SharePoint Foundation 2010 
...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/05/02/april-2011-cu-for-sharepoint-2007-and-2010-has-been-released.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159966" width="1" height="1"&gt;</description></item><item><title>Microsoft SharePoint Online Code Analysis Framework (MSOCAF)</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/04/01/microsoft-sharepoint-online-code-analysis-framework-msocaf.aspx</link><pubDate>Fri, 01 Apr 2011 12:22:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148711</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148711</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148711</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/04/01/microsoft-sharepoint-online-code-analysis-framework-msocaf.aspx#comments</comments><description>&lt;p&gt;At Microsoft SharePoint Online, as a part of the validation and verification process, a tool is used: MSOCAF.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&amp;quot;MSOCAF analysis executes a set of rules against the custom solutions, prior to submission for deployment approval into the pre-production and production environments. The MSOCAF application is built using an extensible framework so that the SharePoint Online engineering team can add new rules and/or plug-ins in the future. Code analysis within MSOCAF focuses on areas like memory management, security vulnerabilities, exception management, object model usage, quality gates for unsupported features and reporting. The framework leverages existing tools like FxCop, CAT.Net, and SPDisposeCheck to analyze custom solutions. &amp;quot;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Now you can use it yourself too!&lt;/p&gt;  &lt;p&gt;&lt;a href="https://caf.sharepoint.microsoftonline.com/" target="_blank"&gt;MSOCAF&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148711" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category></item><item><title>SharePoint 2010 February 2011 CU</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/03/21/sharepoint-2010-february-2011-cu.aspx</link><pubDate>Mon, 21 Mar 2011 13:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148707</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148707</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148707</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/03/21/sharepoint-2010-february-2011-cu.aspx#comments</comments><description>&lt;p&gt;The SharePoint 2010 Feburary 2011 CU is available.&lt;/p&gt;  &lt;p&gt;MSF2010:    &lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2475880" target="_blank"&gt;KB2475880&lt;/a&gt;: The full server package for Microsoft SharePoint Foundation 2010     &lt;br /&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2475880&amp;amp;kbln=en-us" target="_blank"&gt;Download link&lt;/a&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:34b3f6ac-29c8-4496-a421-25524925cc68" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+2010" rel="tag"&gt;SharePoint 2010&lt;/a&gt;&lt;/div&gt; &lt;/p&gt;  &lt;p&gt;SPS2010:    &lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2475878" target="_blank"&gt;KB2475878&lt;/a&gt;: The full server package for SharePoint Server 2010 and contains also the MSF2010 fixes so you need only this one package.     &lt;br /&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2475878&amp;amp;kbln=en-us" target="_blank"&gt;Download link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Important for all Server Applications listed above:      &lt;br /&gt;After applying the preceding updates, run the SharePoint Products and Technologies Configuration Wizard or “psconfig –cmd upgrade –inplace b2b -wait” in command line. This needs to be done on all servers in the farm with SharePoint installed. You can run psconfig in parallel on all SharePoint machines.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;We have with our February CU also a SharePoint Designer 2010 hotfix package available.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2496947" target="_blank"&gt;KB2496947&lt;/a&gt;: Description of the SharePoint Designer 2010 hotfix package (spd-x-none.msp): February 22, 2011     &lt;br /&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2496947&amp;amp;kbln=en-us" target="_blank"&gt;Download link&lt;/a&gt;     &lt;br /&gt;Please be sure that you take the right binary version because we have 32bit and 64bit available.&lt;/p&gt;  &lt;p&gt;Also available for MOSS 2007 and WSS v3.0: &lt;a href="http://blogs.msdn.com/b/joerg_sinemus/archive/2011/02/23/wss-and-moss-february-2011-cu.aspx" target="_blank"&gt;http://blogs.msdn.com/b/joerg_sinemus/archive/2011/02/23/wss-and-moss-february-2011-cu.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148707" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category></item><item><title>Visual Studio 2010 SP1 available (including TFS 2010)</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/03/10/visual-studio-2010-sp1-available-including-tfs-2010.aspx</link><pubDate>Thu, 10 Mar 2011 13:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148710</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148710</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148710</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/03/10/visual-studio-2010-sp1-available-including-tfs-2010.aspx#comments</comments><description>&lt;p&gt;The Visual Studio team have released the first service pack for VS 2010 and TFS 2010.&lt;/p&gt;  &lt;p&gt;VS 2010    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568AA6-8107-475D-948A-EF22627E57A5" target="_blank"&gt;Visual Studio 2010 Service Pack 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;TFS 2010    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=43d9f36a-6347-4ac4-86b6-cee4cd54b5d2" target="_blank"&gt;Team Foundation Server 2010 Service Pack 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Why it this SP1 so relevant for SharePoint 2010? We now have .Net Framework 3.5 Unit testing. I'll let you figure this one out ;)    &lt;br /&gt;( here is a &lt;a href="http://stefvanhooijdonk.com/2010/06/22/doing-unit-testing-with-tfs2010-and-sp2010/" target="_blank"&gt;hint&lt;/a&gt;)     &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:461a2b7e-7969-4b3a-ac3c-3d26aead6f8e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+2010" rel="tag"&gt;SharePoint 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148710" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Team+Foundataion+Server/">Team Foundataion Server</category></item><item><title>December 2010 CU available for SharePoint 2010 Foundation and Server</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/01/05/december-2010-cu-available-for-sharepoint-2010-foundation-and-server.aspx</link><pubDate>Wed, 05 Jan 2011 13:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148709</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148709</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148709</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2011/01/05/december-2010-cu-available-for-sharepoint-2010-foundation-and-server.aspx#comments</comments><description>&lt;p&gt;Head over here for more details:    &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/stefan_gossner/archive/2011/01/03/december-2010-cu-for-sharepoint-2007-and-2010-has-been-released-on-friday.aspx" target="_blank"&gt;http://blogs.technet.com/b/stefan_gossner/archive/2011/01/03/december-2010-cu-for-sharepoint-2007-and-2010-has-been-released-on-friday.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check the know issues, the server package has 2!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fb7085c4-85b3-4a64-9aab-8531f461dfb6" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint+2010" rel="tag"&gt;SharePoint 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148709" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category></item><item><title>Writing your own Trusted Identity provider for SP2010 (3)</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/15/writing-your-own-trusted-identity-provider-for-sp2010-3.aspx</link><pubDate>Wed, 15 Dec 2010 13:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148716</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148716</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148716</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/15/writing-your-own-trusted-identity-provider-for-sp2010-3.aspx#comments</comments><description>&lt;p&gt;This is part three of a Multi Blog post on &amp;quot;&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/01/writing-your-own-trusted-identity-provider-for-sp2010-1.aspx" target="_blank"&gt;writing your own Trusted Identity provider / Claim Provider for SP2010&lt;/a&gt;&amp;quot;. In the first &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/01/writing-your-own-trusted-identity-provider-for-sp2010-1.aspx" target="_blank"&gt;post&lt;/a&gt; I covered:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a Custom &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd347547.aspx" target="_blank"&gt;Security Token Service&lt;/a&gt; with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c148b2df-c7af-46bb-9162-2c9422208504&amp;amp;displaylang=en" target="_blank"&gt;Windows Identity Framework SDK&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the second &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/08/writing-your-own-trusted-identity-provider-for-sp2010-2.aspx" target="_blank"&gt;post&lt;/a&gt; I covered:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a Custom &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimprovider.aspx" target="_blank"&gt;SPClaimProvider&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimproviderfeaturereceiver.aspx" target="_blank"&gt;Register&lt;/a&gt; your Custom SPClaimProvider &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this post will:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a Trust between your Tusted Identity Provider (STS) and SharePoint 2010 &lt;/li&gt;    &lt;li&gt;Create or Configure your SP2010 WebApplication to use the Tusted Identity Provider &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To create a Trust between your new STS and SharePoint you need to run a few powershell steps:    &lt;br /&gt;First we have some variables to set:&lt;/p&gt;  &lt;pre&gt;&lt;code class="powershell"&gt;
$invocation = (Get-Variable MyInvocation -Scope 0).Value
$rootPath = Split-Path $invocation.MyCommand.Path

$spClaimTypesCsv = Join-Path $rootPath "claim-types.csv"

# identity provider certificate
$idpSigningCertificatePath = Join-Path $rootPath "idp-certificate.crt"
# identity provider ca certificate
$idpSigningCertificateAuthority = Join-Path $rootPath "idp-certificate-ca.crt"

# identity provider url and name
$idpPassivEndpoint = "http://stslogin.sp2010.dev/default.aspx"
$idpName = "Verbondsleden"
$idpDisplayName = "Verbondsleden"

# sharepoint webapplication we are going to use to log in to with this identity provider
$spRealm = "http://claims.sp2010.dev/_trust/default.aspx"
# name of the SPClaimProvider in SharePoint we registered earlier
$claimProvider = "VerbondsledenClaimsProvider"
# login/username Claim Type
$userIdentityClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Next we start with the creation of a trust: 

  &lt;/p&gt;

&lt;pre&gt;&lt;code class="powershell"&gt;
Write-Host "Creating signing certificate for {0} from {1}" -f $idpName, $idpSigningCertificatePath
$idpSigningCertificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($idpSigningCertificatePath)
echo $idpSigningCertificate

Write-Host "Trusting the IdP certificate directly {0}" -f $idpSigningCertificatePath
$rootCert = Get-PfxCertificate $idpSigningCertificatePath
Remove-SPTrustedRootAuthority $idpName

#Register the new identity provider
New-SPTrustedRootAuthority $idpName -Certificate $rootCert
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
  This adds a Trust, and you can view this in the Central Administration :&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/0272.sp2010_2D00_claims_2D00_trust1_5F00_14B10BA5.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sp2010-claims-trust[1]" border="0" alt="sp2010-claims-trust[1]" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/5086.sp2010_2D00_claims_2D00_trust1_5F00_thumb_5F00_5AC1C8B8.png" width="244" height="40" /&gt;&lt;/a&gt; 

  &lt;/p&gt;&lt;p&gt;Now we create a SPTrustedIdentityTokenIssuer: &lt;/p&gt;

&lt;pre&gt;&lt;code class="powershell"&gt;
# remove if it already exists
$sts = Get-SPTrustedIdentityTokenIssuer | where {$_.Name -eq $idpName }
if(-not ($sts -eq $null)) {
	"SPTrustedIdentityTokenIssuer {0} already exists, attempting to remove" -f $idpName
    Remove-SPTrustedIdentityTokenIssuer -Identity $idpName
}

# the ClaimTypes the Identity Provider provides, this is not needed because we have a SPClaimProvider
[array] $claimTypeMappings = @()
$spClaimType = Import-Csv $spClaimTypesCsv
foreach ($claimType in $spClaimType) {
	"Adding claim type {0} ({1})" -f $claimType.ClaimType, $claimType.Description
	$claimTypeMapping = New-SPClaimTypeMapping $claimType.ClaimType -IncomingClaimTypeDisplayName $claimType.Name -SameAsIncoming
    if(-not (($claimTypeMapping -eq $null) -or ($claimTypeMapping.InputClaimType -eq $null))) {
        $claimTypeMappings += $claimTypeMapping
    }
}

"Creating SPTrustedIdentityTokenIssuer {0}" -f $idpName
$sts = New-SPTrustedIdentityTokenIssuer -Name $idpName -Description $idpDisplayName -Realm $spRealm -ImportTrustCertificate $idpSigningCertificate -ClaimsMappings $claimTypeMappings -SignInUrl $idpPassivEndpoint -IdentifierClaim $userIdentityClaimType
echo $sts

if($claimProvider -eq "") {
	"Default claim provider selected for {0}" -f $idpName
} else {
	"Setting claim provider for {0} to {1}" -f $idpName, $claimProvider
	Set-SPTrustedIdentityTokenIssuer -Identity $idpName -ClaimProvider $claimProvider
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And now we can trust our own STS in our Claims Based WebApplication:&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/5327.sp2010_2D00_claims_2D00_webapplication_2D00_provider1_5F00_7DA28A68.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sp2010-claims-webapplication-provider[1]" border="0" alt="sp2010-claims-webapplication-provider[1]" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/1780.sp2010_2D00_claims_2D00_webapplication_2D00_provider1_5F00_thumb_5F00_7BF1BE94.png" width="244" height="212" /&gt;&lt;/a&gt; 

  &lt;br /&gt;Off course there is an App/Wizard for this also: &lt;a href="http://shojeeb.com/sharepoint/sharepoint-federation-utility-spfedutil-exe/" target="_blank"&gt;SPFedUtil&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So there you have it, when you browse your Claims Based WebApplicaiton you will now get this screen:&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/0118.sp2010_2D00_claims_2D00_webapplication_2D00_login1_5F00_60D8EF86.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sp2010-claims-webapplication-login[1]" border="0" alt="sp2010-claims-webapplication-login[1]" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/6472.sp2010_2D00_claims_2D00_webapplication_2D00_login1_5F00_thumb_5F00_18AB33AA.png" width="244" height="108" /&gt;&lt;/a&gt; 

  &lt;br /&gt;Choose your STS, login with proper credentials, and you will be redirected to your SharePoint WebApplication: 

  &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/0537.sp2010_2D00_claims_2D00_webapplication_2D00_logged_2D00_in1_5F00_656EFA40.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sp2010-claims-webapplication-logged-in[1]" border="0" alt="sp2010-claims-webapplication-logged-in[1]" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/1205.sp2010_2D00_claims_2D00_webapplication_2D00_logged_2D00_in1_5F00_thumb_5F00_2B7FB754.png" width="244" height="49" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Small Bonus tip: add an identity claim to a Site collection Group&lt;/p&gt;

&lt;pre&gt;&lt;code class="powershell"&gt;
$usr = New-SPClaimsPrincipal -TrustedIdentityTokenIssuer "Verbondsleden" -Identity "user@company.com"
New-SPUser $usr.ToEncodedString() -web http://claims.sp2010.dev
Set-SPUser -Identity $usr.ToEncodedString() -web $url -group "Groupname"
# done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Small Bonus tip 2: add a AD Group to a Site collection group with Claims based authentication:&lt;/p&gt;
&lt;pre&gt;&lt;code class="powershell"&gt;
$grp1 = (New-Object System.Security.Principal.NTAccount("TEST", "domain users")).Translate([System.Security.Principal.SecurityIdentifier]).Value
$memberclaims = New-SPClaimsPrincipal -Identity $grp1 -IdentityType WindowsSecurityGroupSid
New-SPUser  $memberclaims.ToEncodedString() -web http://claims.sp2010.dev
Set-SPUser -Identity $memberclaims.ToEncodedString() -web $url -group "Groupname"
# done
&lt;/code&gt;&lt;/pre&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148716" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Claims/">Claims</category></item><item><title>Writing your own Trusted Identity provider for SP2010 (2)</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/08/writing-your-own-trusted-identity-provider-for-sp2010-2.aspx</link><pubDate>Wed, 08 Dec 2010 13:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148715</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148715</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148715</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/08/writing-your-own-trusted-identity-provider-for-sp2010-2.aspx#comments</comments><description>&lt;p&gt;This is part two of a Multi Blog post on "&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/01/writing-your-own-trusted-identity-provider-for-sp2010-1.aspx" target="_blank"&gt;writing your own Trusted Identity provider / Claim Provider for SP2010&lt;/a&gt;". &lt;br /&gt;In the first &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/01/writing-your-own-trusted-identity-provider-for-sp2010-1.aspx" target="_blank"&gt;post&lt;/a&gt; I covered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a Custom &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd347547.aspx" target="_blank"&gt;Security Token Service&lt;/a&gt; with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c148b2df-c7af-46bb-9162-2c9422208504&amp;amp;displaylang=en" target="_blank"&gt;Windows Identity Framework SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this post I will cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a Custom &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimprovider.aspx" target="_blank"&gt;SPClaimProvider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimproviderfeaturereceiver.aspx" target="_blank"&gt;Register&lt;/a&gt; your Custom SPClaimProvider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Create a Custom SPClaimProvider&lt;/h3&gt;
&lt;p&gt;For SharePoint 2010 to Trust any Identity Provider, we need a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimprovider.aspx" target="_blank"&gt;SPClaimProvider&lt;/a&gt; specific for that provider. This SPClaimProvider has two main purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide a way for SharePoint to communicate with any Trusted Identity Provider in a uniform (Interface) way.&lt;/li&gt;
&lt;li&gt;And provide SharePoint a way to use the same Claims for Users that have logged in through a different (e.g. AD) Identity Provider, let's call this Claims Augmentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To create a SPClaimProvider follow the following steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a new VS2010 Empty SP2010 Project&lt;/li&gt;
&lt;li&gt;And add references to &lt;em&gt;Microsoft.IdentityModel&lt;/em&gt;, &lt;em&gt;Microsoft.SharePoint&lt;/em&gt; and &lt;em&gt;Microsoft.SharePoint.Security&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Create a new Class, let's name it CustomClaimsProvider and inherit from:&lt;em&gt;Microsoft.SharePoint.Administration.Claims.SPClaimProvider&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Implement all the methods for resolving claims, this is so we can use the claims provided within SharePoint to give rights to claims:
&lt;ul&gt;
&lt;li&gt;FillHierarchy&lt;/li&gt;
&lt;li&gt;FillResolve&lt;/li&gt;
&lt;li&gt;FillSearch, FillSchema&lt;/li&gt;
&lt;li&gt;FillClaimTypes,FillClaimValueTypes,FillEntityTypes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Implement &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimprovider.fillclaimsforentity.aspx" target="_blank"&gt;FillClaimsForEntity&lt;/a&gt;&lt;/em&gt; for the claims augmentation&lt;/li&gt;
&lt;li&gt;Override the &lt;em&gt;SupportsEntityInformation&lt;/em&gt;,&lt;em&gt;&lt;em&gt;SupportsHierarchy&lt;/em&gt;,&lt;/em&gt;,&lt;em&gt;SupportsResolve&lt;/em&gt; and &lt;em&gt;SupportsSearch&lt;/em&gt; properties and let them "return True" since we have implemented all the Fill Methods for this SPClaimProvider&lt;/li&gt;
&lt;li&gt;Give your Provider a &lt;em&gt;Name&lt;/em&gt; by overriding the Property Name. You will need this later on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In fairness, this &lt;a href="http://blogs.technet.com/b/speschka/archive/2010/03/13/writing-a-custom-claims-provider-for-sharepoint-2010-part-1.aspx" target="_blank"&gt;post&lt;/a&gt; has an excellent description on the subject also. &lt;br /&gt;Sample implementation of FillClaimsForEntity&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum1"&gt; 1:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// Get's the username part of a claims authentication login claim &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum3"&gt; 3:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// figure out who the user is so we know what team to add to their claim&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum4"&gt; 4:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// the entity.Value from the input parameter contains the name of the &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum5"&gt; 5:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// authenticated user. for a SQL FBA user, it looks something like&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum6"&gt; 6:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// 0#.f|sqlmembership|user1; for a Windows claims user it looks something&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum7"&gt; 7:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// 0#.w|steve\\wilmaf&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum8"&gt; 8:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// 0#.t|Customsleden|stef@tamtam.nl&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum9"&gt; 9:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum10"&gt; 10:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;param name="identityClaims"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum11"&gt; 11:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;returns&amp;gt;only the login part&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum12"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; GetLoginPartFromIdentityClaim(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; identityClaims) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum13"&gt; 13:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; login = identityClaims;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum14"&gt; 14:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(login) &amp;amp;&amp;amp; login.Contains(&lt;span style="color: #006080;"&gt;"|"&lt;/span&gt;)) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum15"&gt; 15:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] parts = login.Split(&lt;span style="color: #006080;"&gt;'|'&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum16"&gt; 16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (parts.GetLength(0) == 3) &lt;span style="color: #008000;"&gt;// formsbased or trusted provider based&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum17"&gt; 17:&lt;/span&gt;             login = parts[2];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum18"&gt; 18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (parts.GetLength(0) == 2) &lt;span style="color: #008000;"&gt;// windows based&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum19"&gt; 19:&lt;/span&gt;             login = parts[1];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum20"&gt; 20:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum21"&gt; 21:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; login;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum22"&gt; 22:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum23"&gt; 23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum24"&gt; 24:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum25"&gt; 25:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// Add Claims to a logged in User, from Dynamics CRM info&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum26"&gt; 26:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum27"&gt; 27:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;param name="context"&amp;gt;Current Context, url&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum28"&gt; 28:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;param name="entity"&amp;gt;the logged in user/claim&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum29"&gt; 29:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;param name="claims"&amp;gt;The list of claims for the user&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum30"&gt; 30:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; FillClaimsForEntity(Uri context, SPClaim entity, List&amp;lt;SPClaim&amp;gt; claims) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum31"&gt; 31:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (claims == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum32"&gt; 32:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color: #006080;"&gt;"claims"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum33"&gt; 33:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (entity == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum34"&gt; 34:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color: #006080;"&gt;"entity"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum35"&gt; 35:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum36"&gt; 36:&lt;/span&gt;     Logging.LogMessage(entity.Value);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum37"&gt; 37:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum38"&gt; 38:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; login = Utilities.GetLoginPartFromIdentityClaim(entity.Value);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum39"&gt; 39:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum40"&gt; 40:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// if windows user, get the email ?&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum41"&gt; 41:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(login)) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum42"&gt; 42:&lt;/span&gt;         Logging.LogMessage(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #006080;"&gt;"User is {0}"&lt;/span&gt;, login));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum43"&gt; 43:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum44"&gt; 44:&lt;/span&gt;         CRMClient.Entities.User user = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum45"&gt; 45:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; email = login;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum46"&gt; 46:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (login.Contains(&lt;span style="color: #006080;"&gt;"@"&lt;/span&gt;)) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum47"&gt; 47:&lt;/span&gt;             user = CRMClient.CrmSQLClient.GetUserByEmail(login);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum48"&gt; 48:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum49"&gt; 49:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (login.Contains(&lt;span style="color: #006080;"&gt;"\\")) {&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum50"&gt; 50:&lt;/span&gt;             user = CRMClient.CrmSQLClient.GetUser(login);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum51"&gt; 51:&lt;/span&gt;             if (user != null)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum52"&gt; 52:&lt;/span&gt;                 email = user.Email;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum53"&gt; 53:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum54"&gt; 54:&lt;/span&gt;         // employee, crm users&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum55"&gt; 55:&lt;/span&gt;         if (user != null) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum56"&gt; 56:&lt;/span&gt;             try {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum57"&gt; 57:&lt;/span&gt;                 Logging.LogMessage(string.Format("User &lt;span style="color: #0000ff;"&gt;is&lt;/span&gt; SystemUser of CRM with an license, Name:{0}&lt;span style="color: #006080;"&gt;", user.FullName));&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum58"&gt; 58:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum59"&gt; 59:&lt;/span&gt;                 claims.Add( GetClaim(CustomClaimsProvider.CustomAccountTypeClaimType, "everyone&lt;span style="color: #006080;"&gt;"));&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum60"&gt; 60:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum61"&gt; 61:&lt;/span&gt;                 SPClaim employee = null;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum62"&gt; 62:&lt;/span&gt;                 if (user.FullLicense) { // admin and or full license                            &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum63"&gt; 63:&lt;/span&gt;                     employee = GetClaim(CustomClaimsProvider.CustomAccountTypeClaimType, "employee&lt;span style="color: #006080;"&gt;");&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum64"&gt; 64:&lt;/span&gt;                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum65"&gt; 65:&lt;/span&gt;                 else {// readonly &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum66"&gt; 66:&lt;/span&gt;                     employee = GetClaim(CustomClaimsProvider.CustomAccountTypeClaimType, "employeero&lt;span style="color: #006080;"&gt;");&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum67"&gt; 67:&lt;/span&gt;                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum68"&gt; 68:&lt;/span&gt;                 if (employee != null)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum69"&gt; 69:&lt;/span&gt;                     claims.Add(employee);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum70"&gt; 70:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum71"&gt; 71:&lt;/span&gt;             catch (Exception exc) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum72"&gt; 72:&lt;/span&gt;                 Logging.LogException(exc);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum73"&gt; 73:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum74"&gt; 74:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum75"&gt; 75:&lt;/span&gt;         else {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum76"&gt; 76:&lt;/span&gt;             Logging.LogMessage(string.Format("{0} not found &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; SYSTEMUSER &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; CRM", login));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum77"&gt; 77:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum78"&gt; 78:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum79"&gt; 79:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Register your Claims Provider for SharePoint&lt;/h3&gt;
&lt;p&gt;In order for your Claims Provider to be registered within SharePoint 2010 you will need to create a specific type of Feature.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a Farm Feature to your Project&lt;/li&gt;
&lt;li&gt;Add an EventReicever to your new Feature&lt;/li&gt;
&lt;li&gt;And let your receiver inherit from &lt;em&gt;SPClaimProviderFeatureReceiver&lt;/em&gt; (see: &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimproviderfeaturereceiver.aspx" target="_blank"&gt;Register&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;And now implement the following Properties in your Feature Event Receiver
&lt;ul&gt;
&lt;li&gt;ClaimProviderDisplayName&lt;/li&gt;
&lt;li&gt;ClaimProviderDescription&lt;/li&gt;
&lt;li&gt;ClaimProviderAssembly&lt;/li&gt;
&lt;li&gt;ClaimProviderType&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can use this to return the last two properties:&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum1"&gt; 1:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;Get the Full Assembly Name of the Claim provider we want to register&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; ClaimProviderAssembly {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum3"&gt; 3:&lt;/span&gt;     get {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum4"&gt; 4:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;(CustomClaimsProvider).Assembly.FullName;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum5"&gt; 5:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum6"&gt; 6:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum7"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum8"&gt; 8:&lt;/span&gt; &lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;Get the Class Type of the Claim provider we want to register&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum9"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; ClaimProviderType {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum10"&gt; 10:&lt;/span&gt;     get {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum11"&gt; 11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;(CustomClaimsProvider).FullName;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum12"&gt; 12:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #606060;" id="lnum13"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;That's it, you can now register your Claims Provider, and if you want you can use this as is. &lt;br /&gt;Next &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/15/writing-your-own-trusted-identity-provider-for-sp2010-3.aspx" target="_blank"&gt;post&lt;/a&gt; will be on these subjects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a Trust between your Tusted Identity Provider (STS) and SharePoint 2010&lt;/li&gt;
&lt;li&gt;Create or Configure your SP2010 WebApplication to use the Tusted Identity Provider&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148715" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Claims/">Claims</category></item><item><title>Writing your own Trusted Identity provider for SP2010 (1)</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/01/writing-your-own-trusted-identity-provider-for-sp2010-1.aspx</link><pubDate>Wed, 01 Dec 2010 13:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10148712</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10148712</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10148712</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/01/writing-your-own-trusted-identity-provider-for-sp2010-1.aspx#comments</comments><description>&lt;p&gt;With the introduction of the Windows Identity Framework and SharePoint 2010 it is now possible to have multiple authentication providers on a Single URL on a SPWebApplication.    &lt;br /&gt;Especialy in an Extranet scenario this is very usefull:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Employees login with their AD Account &lt;/li&gt;    &lt;li&gt;Partners, suppliers, customers login through a (Custom) &lt;em&gt;Trusted Identity Provider&lt;/em&gt; ( Like facebook,OpenID or custom ) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Image you have a CRM Application (like Microsoft Dynamics CRM 4) where you store all the relations (contacts) your company has with customers, partners and suppliers. You can use this information, e.g. the email addresses and a custom field for a password, to create your own Identity Provider and provide access to your extranet/collaboration portal based on the information stored in the CRM application.&lt;/p&gt;  &lt;p&gt;In 2007 you would extend your SPWebApplication and configure Forms Based Authentication. You would lose the Client Integration Features of Office (2007), and you needed to configure your Membership Provider in the Web.Config.&lt;/p&gt;  &lt;p&gt;In 2010 we can use a &lt;a href="http://blogs.msdn.com/b/russmax/archive/2010/05/27/understanding-sharepoint-2010-claims-authentication.aspx"&gt;Identity provider/Claim Provider&lt;/a&gt;. There are some major differences / benefits in comparison to a custom Membership Provider. With an Identity Provider ( custom or not ):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can use the Integration Features of the Office (2010) Client &lt;/li&gt;    &lt;li&gt;All users connect on the same url / WebApplication &lt;/li&gt;    &lt;li&gt;You can re-use a Identity Provider on more than one WebApp (it's now just a &lt;em&gt;Trust&lt;/em&gt; thing) &lt;/li&gt;    &lt;li&gt;You have Single Sing On (SSO) for free with other WebApps that Trust the same Identity Provider &lt;/li&gt;    &lt;li&gt;Configuration is done through PowerShell on all servers at once! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This will be a Multi Blog post on &amp;quot;writing your own Trusted Identity provider / Claim Provider for SP2010&amp;quot;.    &lt;br /&gt;In order to have a working Trusted Identity provider for SharePoint you will need to do a couple of things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a Custom &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd347547.aspx" target="_blank"&gt;Security Token Service&lt;/a&gt; with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c148b2df-c7af-46bb-9162-2c9422208504&amp;amp;displaylang=en" target="_blank"&gt;Windows Identity Framework SDK&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Create a Custom &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimprovider.aspx" target="_blank"&gt;SPClaimProvider&lt;/a&gt; ( see &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/08/writing-your-own-trusted-identity-provider-for-sp2010-2.aspx" target="_blank"&gt;part 2&lt;/a&gt; ) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimproviderfeaturereceiver.aspx" target="_blank"&gt;Register&lt;/a&gt; your Custom SPClaimProvider ( see &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/08/writing-your-own-trusted-identity-provider-for-sp2010-2.aspx" target="_blank"&gt;part 2&lt;/a&gt; ) &lt;/li&gt;    &lt;li&gt;Create a Trust between your Tusted Identity Provider (STS) and SharePoint 2010 &lt;/li&gt;    &lt;li&gt;Create or Configure your SP2010 WebApplication to use the Tusted Identity Provider &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This post will focus on how to create a Custom Security Token Service with the Windows Identity Framework SDK.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c148b2df-c7af-46bb-9162-2c9422208504&amp;amp;displaylang=en" target="_blank"&gt;Windows Identity Framework SDK&lt;/a&gt; for .Net 4.0 ( and thus VS 2010 )       &lt;br /&gt;SP2010 runs on .Net 3.5 but since this is a Separate IIS WebApplication you use the 4.0 &lt;/li&gt;    &lt;li&gt;Create a new Web Project with VS2010 based on the &lt;em&gt;ASP.Net Security Token Service Web Site&lt;/em&gt; template       &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/6888.vs2010_2D00_wif_2D00_4_5F00_0_2D00_sts_2D00_300x101_5F00_42517AE3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="vs2010-wif-4_0-sts-300x101" border="0" alt="vs2010-wif-4_0-sts-300x101" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/1682.vs2010_2D00_wif_2D00_4_5F00_0_2D00_sts_2D00_300x101_5F00_thumb_5F00_4E72F50A.png" width="244" height="85" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;This will be the Website used by users to actually login to&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Note the following important classes/methods in the project:&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/4353.vs2010_2D00_wif_2D00_4_5F00_0_2D00_sts_2D00_website_5F00_11029083.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="vs2010-wif-4_0-sts-website" border="0" alt="vs2010-wif-4_0-sts-website" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/2275.vs2010_2D00_wif_2D00_4_5F00_0_2D00_sts_2D00_website_5F00_thumb_5F00_56A71AA1.png" width="244" height="191" /&gt;&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;CustomSecurityTokenService.cs, and especially the method: &lt;em&gt;GetOutputClaimsIdentity&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;Login.aspx, and especially the CodeBehind: &lt;em&gt;Page_Load&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;Web.Config, and especially the appSettings: &lt;em&gt;IssuerName&lt;/em&gt; and &lt;em&gt;SigningCertificateName&lt;/em&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Implement the method &lt;em&gt;GetOutputClaimsIdentity&lt;/em&gt;,       &lt;br /&gt;here I have chosen to login with the user's email address.       &lt;div id="codeSnippetWrapper"&gt;       &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;         &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;This method returns the claims to be issued in the token.&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;principal&amp;quot;&amp;gt;The caller's principal.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;request&amp;quot;&amp;gt;The incoming RST, can be&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// used to obtain addtional information.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;scope&amp;quot;&amp;gt;The scope information &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// corresponding to this request.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;exception cref=&amp;quot;ArgumentNullException&amp;quot;&amp;gt;If 'principal' &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// parameter is null.&amp;lt;/exception&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;returns&amp;gt;The outgoing claimsIdentity to be included &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// in the issued token.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; IClaimsIdentity GetOutputClaimsIdentity(IClaimsPrincipal principal, &lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;                                         RequestSecurityToken request, &lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;                                         Scope scope) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; == principal) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color: #006080"&gt;&amp;quot;principal&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// name = the email address of the user&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name = principal.Identity.Name;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// create the new identity&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;     ClaimsIdentity outputIdentity = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ClaimsIdentity();&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// add new claim based on login/email&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;     outputIdentity.Claims.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Claim(&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;       System.IdentityModel.Claims.ClaimTypes.Email, &lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;       principal.Identity.Name));&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// return the claim&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; outputIdentity;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div&gt;If you want to add more claims you can! You could add claims to the output here to facilitate groups of users.&lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Implement the Login button/event in the Login page 
    &lt;div id="codeSnippetWrapper"&gt;
      &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;Handle the Page Load&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Note: Add code to validate user name, password. This code is for illustrative purpose only.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Do not use it in production environment.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(txtUserName.Text)) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Check credentials agains backoffice (Dynamics CRM 4 in this case)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (CrmSQLClient.ValidateContactLogin(txtUserName.Text, txtPassword.Text)){&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             &lt;span style="color: #008000"&gt;// Login info is valid, redirect the user.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Request.QueryString[&lt;span style="color: #006080"&gt;&amp;quot;ReturnUrl&amp;quot;&lt;/span&gt;] != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;                 FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;                 FormsAuthentication.SetAuthCookie(txtUserName.Text, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;                 Response.Redirect(&lt;span style="color: #006080"&gt;&amp;quot;default.aspx&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Change the login page front end &lt;/li&gt;

  &lt;li&gt;Add extra functions like &amp;quot;Forgot my password&amp;quot; or &amp;quot;Register for an account&amp;quot; now or later &lt;/li&gt;

  &lt;li&gt;Deploy your webapplication to IIS. 
    &lt;br /&gt;You should now be able to login to your custom STS with a browser:&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/0636.vs2010_2D00_wif_2D00_4_5F00_0_2D00_sts_2D00_website_2D00_login_2D00_300x108_5F00_69E7D140.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="vs2010-wif-4_0-sts-website-login-300x108" border="0" alt="vs2010-wif-4_0-sts-website-login-300x108" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-44-44-metablogapi/2275.vs2010_2D00_wif_2D00_4_5F00_0_2D00_sts_2D00_website_2D00_login_2D00_300x108_5F00_thumb_5F00_48882BA4.png" width="244" height="90" /&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Create a proper &lt;em&gt;&amp;quot;FederationMetadata.xml&amp;quot;&lt;/em&gt;. 

    &lt;br /&gt;This was a bit hard for me at first. But there is an &lt;a href="http://weblogs.thinktecture.com/cweyer/2009/05/geneva-based-ws-federation-metadata-document-generation-wizard-or-oops-i-did-it-again.html" target="_blank"&gt;App&lt;/a&gt; for that! 

    &lt;ul&gt;
      &lt;li&gt;Provide the proper values for the WS-Federation Metadata Generator &lt;/li&gt;

      &lt;li&gt;You will need a Certificate to sign the &lt;em&gt;&amp;quot;FederationMetadata.xml&amp;quot;&lt;/em&gt; document &lt;/li&gt;

      &lt;li&gt;Copy the new &lt;em&gt;&amp;quot;FederationMetadata.xml&amp;quot;&lt;/em&gt; to your published STS Website &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Test your new STS WebApplication by logging in. You might get an error when you first test this. Use this url to test if your login page works:&lt;em&gt;http://test-server/default.aspx?&amp;amp;wa=wsignin1.0&lt;/em&gt; &lt;/li&gt;

  &lt;li&gt;There is one thing left to do when you want to use your Identity Provider: install a certificate on the Web Server, and use that to sign the &lt;em&gt;FederationMetadata.xml&lt;/em&gt; and update the Web.Config of your provider to reference this certificate in the &lt;em&gt;IssuerName&lt;/em&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/12/08/writing-your-own-trusted-identity-provider-for-sp2010-2.aspx" target="_blank"&gt;post will descibe the SPClaimProvider to create and register&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And be sure to check-out some small &amp;quot;issues&amp;quot; with &lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/claims/" target="_blank"&gt;Claims Based authentication&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10148712" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Claims/">Claims</category></item><item><title>The Publishing Cache of SP2010 WebApplications</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/10/11/the-publishing-cache-of-sp2010-webapplications.aspx</link><pubDate>Mon, 11 Oct 2010 12:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238518</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10238518</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10238518</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/10/11/the-publishing-cache-of-sp2010-webapplications.aspx#comments</comments><description>In a recent post I talked about the publishing cache. It turns out this also applies for Classic Authentication WebApplications. (from the original post:) Have a look into your Developer Dashboard to see what is going on; the warning and critical error...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/10/11/the-publishing-cache-of-sp2010-webapplications.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238518" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/PowerShell/">PowerShell</category></item><item><title>SP2010 Rest services ListData.svc not working in RTM</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/08/26/sp2010-rest-services-listdata-svc-not-working-in-rtm.aspx</link><pubDate>Thu, 26 Aug 2010 15:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238567</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10238567</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10238567</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/08/26/sp2010-rest-services-listdata-svc-not-working-in-rtm.aspx#comments</comments><description>If you want to use the ListData.svc / Rest service in the SP2010 RTM you might get this error: Could not load type ‘System.Data.Services.Providers.IDataServiceUpdateProvider’ from assembly ‘System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/08/26/sp2010-rest-services-listdata-svc-not-working-in-rtm.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238567" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category></item><item><title>Provisioning Publishing Pages</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/08/23/provisioning-publishing-pages.aspx</link><pubDate>Mon, 23 Aug 2010 13:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238526</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10238526</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10238526</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/08/23/provisioning-publishing-pages.aspx#comments</comments><description>On the interweb there seems to be some confusion on how to provision publishing resources through features. Here is what works for SharePoint 2010. First you wil need a Feature scoped for Site (SPSite), put your ContenType module here. And a Feature scoped...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/08/23/provisioning-publishing-pages.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238526" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/PowerShell/">PowerShell</category></item><item><title>Enterprise Search query giving FaultException when using an ORDER BY</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/07/30/enterprise-search-query-giving-faultexception-when-using-an-order-by.aspx</link><pubDate>Fri, 30 Jul 2010 13:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238528</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10238528</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10238528</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/07/30/enterprise-search-query-giving-faultexception-when-using-an-order-by.aspx#comments</comments><description>Ran into this on a project when using the &amp;quot;FullTextSqlQuery&amp;quot; object to query against the Enterprise Search Service of SharePoint 2010. Had a query that included an Order By clause on my own Managed property other than the normal RANK. string...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/07/30/enterprise-search-query-giving-faultexception-when-using-an-order-by.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238528" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Search/">Search</category></item><item><title>Set default Mysite not working with Office 2010 RTM x64</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/03/21/set-default-mysite-not-working-with-office-2010-rtm-x64.aspx</link><pubDate>Sun, 21 Mar 2010 16:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238568</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10238568</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10238568</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/03/21/set-default-mysite-not-working-with-office-2010-rtm-x64.aspx#comments</comments><description>So, you have installed SharePoint 2010 on your server, you have setup Office 2010 on you client ( x64 ) and now you want your SP2010 Memberships to show up in your Office Client Applications. You navigate to your new SP2010 MySite and want to set it as...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/03/21/set-default-mysite-not-working-with-office-2010-rtm-x64.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238568" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Code/">Code</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/Social/">Social</category></item><item><title>Power of PowerShell and the SharePoint Snap-in</title><link>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/03/02/power-of-powershell-and-the-sharepoint-snap-in.aspx</link><pubDate>Tue, 02 Mar 2010 16:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238557</guid><dc:creator>Stef van Hooijdonk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/rsscomments.aspx?WeblogPostID=10238557</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/commentapi.aspx?WeblogPostID=10238557</wfw:comment><comments>http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/03/02/power-of-powershell-and-the-sharepoint-snap-in.aspx#comments</comments><description>Recently I started to look into some more detail at PowerShell and the SharePoint 2010 Snap-in. As a small exercise I wanted to create something (somewhat) usefull. I came up with a small site structure install script for SP2010. First the source configuration...(&lt;a href="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/2010/03/02/power-of-powershell-and-the-sharepoint-snap-in.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238557" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/life_of_a_sharepoint_consultant/archive/tags/PowerShell/">PowerShell</category></item></channel></rss>