<?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>J.D. Meier's Blog : WCF</title><link>http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx</link><description>Tags: WCF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>New Release: patterns &amp; practices WCF Security Guide</title><link>http://blogs.msdn.com/jmeier/archive/2009/02/11/new-release-patterns-practices-wcf-security-guide.aspx</link><pubDate>Wed, 11 Feb 2009 07:47:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9412016</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9412016.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9412016</wfw:commentRss><description>&lt;p&gt;Today we released our &lt;a href="http://msdn.microsoft.com/en-us/library/cc949034.aspx" target="_blank"&gt;patterns &amp;amp; practices Improving Web Service security: Scenarios and Implementation Guidance for WCF&lt;/a&gt; on MSDN.&amp;#160; Using end-to-end application scenarios, this guide shows you how to design and implement authentication and authorization in WCF. You'll learn how to improve the security of your WCF services through prescriptive guidance including guidelines, a Q&amp;amp;A, practices at a glance, and step-by-step how to articles. The guide is the result of a collaborative effort between patterns &amp;amp; practices, WCF team members, and industry experts. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;Download the patterns &amp;amp; practices WCF Security guide&lt;/a&gt; (CodePlex) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949034.aspx" target="_blank"&gt;Read the patterns &amp;amp; practices WCF Security Guide online&lt;/a&gt; (MSDN) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Key Scenarios      &lt;br /&gt;&lt;/strong&gt;Here's the key scenarios:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;A development team that wants to adopt WCF. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;A software architect or developer looking to get the most out of WCF, with regard to designing their application security. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Interested parties investigating the use of WCF but don&amp;#8217;t know how well it would work for their deployment scenarios and constraints. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Individuals tasked with learning WCF security. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Authentication, authorization, and communication design for your services &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Solution patterns for common distributed application scenarios using WCF &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Principles, patterns, and practices for improving key security aspects in services &lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Contents at a Glance&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Part I: Security Fundamentals for Web Services &lt;/li&gt;    &lt;li&gt;Part II: Fundamentals of WCF Security &lt;/li&gt;    &lt;li&gt;Part III: Intranet Application Scenarios &lt;/li&gt;    &lt;li&gt;Part IV: Internet Application Scenarios &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Chapters&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Foreword by Nicholas Allen &lt;/li&gt;    &lt;li&gt;Foreword by Rockford Lhotka &lt;/li&gt;    &lt;li&gt;Chapter 1: Security Fundamentals for Web Services &lt;/li&gt;    &lt;li&gt;Chapter 2: Threats and Countermeasures for Web Services &lt;/li&gt;    &lt;li&gt;Chapter 3: Security Design Guidelines for Web Services &lt;/li&gt;    &lt;li&gt;Chapter 4: WCF Security Fundamentals &lt;/li&gt;    &lt;li&gt;Chapter 5: Authentication, Authorization, and Identities in WCF &lt;/li&gt;    &lt;li&gt;Chapter 6: Impersonation and Delegation in WCF &lt;/li&gt;    &lt;li&gt;Chapter 7: Message and Transport Security &lt;/li&gt;    &lt;li&gt;Chapter 8: Bindings &lt;/li&gt;    &lt;li&gt;Chapter 9: Intranet - Web to Remote WCF Using Transport Security (Original Caller, TCP) &lt;/li&gt;    &lt;li&gt;Chapter 10: Intranet - Web to Remote WCF Using Transport Security (Trusted Subsystem, HTTP) &lt;/li&gt;    &lt;li&gt;Chapter 11: Intranet - Web to Remote WCF Using Transport Security (Trusted Subsystem, TCP) &lt;/li&gt;    &lt;li&gt;Chapter 12: Intranet - Windows Forms to Remote WCF Using Transport Security (Original Caller, TCP) &lt;/li&gt;    &lt;li&gt;Chapter 13: Internet - WCF and ASMX Client to Remote WCF Using Transport Security (Trusted Subsystem, HTTP) &lt;/li&gt;    &lt;li&gt;Chapter 14: Internet - Web to Remote WCF Using Transport Security (Trusted Subsystem, TCP) &lt;/li&gt;    &lt;li&gt;Chapter 15: Internet &amp;#8211; Windows Forms Client to Remote WCF Using Message Security (Original Caller, HTTP) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Our Team&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;J.D. Meier &lt;/li&gt;    &lt;li&gt;Carlos Farre &lt;/li&gt;    &lt;li&gt;Jason Taylor &lt;/li&gt;    &lt;li&gt;Prashant Bansode &lt;/li&gt;    &lt;li&gt;Steve Gregersen &lt;/li&gt;    &lt;li&gt;Madhu Sundararajan &lt;/li&gt;    &lt;li&gt;Rob Boucher &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Contributors / Reviewers&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;External Contributors / Reviewers&lt;/strong&gt;: Andy Eunson; Anil John; Anu Rajendra; Brandon Bohling; Chaitanya Bijwe; Daniel Root; David P. Romig, Sr.; Dennis Rea; Kevin Lam; Michele Leroux Bustamante; Parameswaran Vaideeswaran; Rockford Lhotka; Rudolph Araujo; Santosh Bejugam &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Microsoft Contributors / Reviewers&lt;/strong&gt;: Alik Levin; Brandon Blazer; Brent Schmaltz; Curt Smith; David Bradley; Dmitri Ossipov; Jan Alexander; Jason Hogg; Jason Pang; John Steer; Marc Goodner; Mark Fussell; Martin Gudgin; Martin Petersen-Frey; Mike de Libero; Mohammad Al-Sabt; Nobuyuki Akama; Ralph Squillace; Richard Lewis; Rick Saling; Rohit Sharma; Scott Mason; Sidd Shenoy; Sidney Higa; Stuart Kwan; Suwat Chitphakdibodin; T.R. Vishwanath; Todd Kutzke; Todd West; Vijay Gajjala; Vittorio Bertocci; Wenlong Dong; Yann Christensen; Yavor Georgiev &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9412016" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/patterns+and+practices/default.aspx">patterns and practices</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Releases/default.aspx">Releases</category></item><item><title>WCF Security Guide is Now Available in HTML</title><link>http://blogs.msdn.com/jmeier/archive/2008/06/19/wcf-security-guide-is-now-available-in-html.aspx</link><pubDate>Thu, 19 Jun 2008 05:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8619805</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8619805.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8619805</wfw:commentRss><description>&lt;p&gt;Our guide, &lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;patterns &amp;amp; practices Improving Web Services Security:Scenarios and Implementation Guidance for WCF&lt;/a&gt; is now available in HTML.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8619805" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>New Release: patterns &amp; practices WCF Security Guide (BETA)</title><link>http://blogs.msdn.com/jmeier/archive/2008/06/04/new-release-patterns-practices-wcf-security-guide-beta.aspx</link><pubDate>Wed, 04 Jun 2008 23:01:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8573905</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8573905.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8573905</wfw:commentRss><description>&lt;p&gt;Today we released our WCF Security guide, &lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;patterns &amp;amp; practices Improving Web Services Security: Scenarios and Implementation Guidance for WCF&lt;/a&gt;.&amp;nbsp; This is our Microsoft playbook for Windows Communication Foundation (WCF - "Indigo".)&amp;nbsp; It shows you how to build secure Web services using WCF.&amp;nbsp; It's a compendium of proven practices, product team recommendations and insights from the field.  &lt;p&gt;&lt;strong&gt;Download the guide&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=WCFSecurityGuide&amp;amp;ReleaseId=14070" target="_blank"&gt;Download the Guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Contents at a Glance&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Part I, "Security Fundamentals for Web Services"&lt;/li&gt; &lt;li&gt;Part II, "Fundamentals of WCF Security"&lt;/li&gt; &lt;li&gt;Part III, "Intranet Application Scenarios"&lt;/li&gt; &lt;li&gt;Part IV, "Internet Application Scenarios" &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Chapters&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Ch 01 - Security Fundamentals for Web Services&lt;/li&gt; &lt;li&gt;Ch 02 - Threats and Countermeasures for Web Services&lt;/li&gt; &lt;li&gt;Ch 03 - Security Design Guidelines for Web Services &lt;/li&gt; &lt;li&gt;Ch 04 - WCF Security Fundamentals&lt;/li&gt; &lt;li&gt;Ch 05 - Authentication, Authorization and Identities in WCF&lt;/li&gt; &lt;li&gt;Ch 06 - Impersonation and Delegation in WCF&lt;/li&gt; &lt;li&gt;Ch 07 - Message and Transport Security in WCF&lt;/li&gt; &lt;li&gt;Ch 08 - WCF Bindings Fundamentals &lt;/li&gt; &lt;li&gt;Ch 09 - Intranet – Web to Remote WCF Using Transport Security (Original Caller, TCP)&lt;/li&gt; &lt;li&gt;Ch 10 - Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem,HTTP)&lt;/li&gt; &lt;li&gt;Ch 11 - Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem TCP)&lt;/li&gt; &lt;li&gt;Ch 12 - Intranet – Windows Forms to Remote WCF Using Transport Security (Original Caller, TCP) &lt;/li&gt; &lt;li&gt;Ch 13 - Internet – WCF and ASMX Client to Remote WCF Using Transport Security (Trusted Subsystem, HTTP)&lt;/li&gt; &lt;li&gt;Ch 14 - Internet – Web to Remote WCF Using Transport Security (Trusted Subsystem, TCP)&lt;/li&gt; &lt;li&gt;Ch 15 - Internet – Windows Forms Client to Remote WCF Using Message Security (Original Caller, HTTP) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;WCF Security Checklist&lt;/li&gt; &lt;li&gt;WCF Security Guidelines&lt;/li&gt; &lt;li&gt;WCF Security Practices at a Glance&lt;/li&gt; &lt;li&gt;WCF Questions and Answers (Q&amp;amp;A)&lt;/li&gt; &lt;li&gt;How Tos&lt;/li&gt; &lt;li&gt;WCF Security Resources&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Contributors and Reviewers &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;External&lt;/strong&gt;: Andy Eunson; Anil John; Anu Rajendra; Brandon Bohling; Chaitanya Bijwe; Daniel Root; David P. Romig, Sr.; Dennis Rea; Kevin Lam; Michele Bustamante; Parameswaran Vaideeswaran; Rockford Lotka; Rudolph Araujo; Santosh Bejugam &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Microsoft&lt;/strong&gt;: Alik Levin; Brandon Blazer; Brent Schmaltz; Curt Smith; David Bradley; Dmitri Ossipov; Don Smith; Jan Alexander; Jason Hogg; Jason Pang; John Steer; Marc Goodner; Mark Fussell; Martin Gudgin; Martin Petersen-Frey; Mike de Libero; Mohammad Al-Sabt; Nobuyuki Akama; Ralph Squillace; Richard Lewis; Rick Saling; Rohit Sharma; Scott Mason; Sidd Shenoy; Sidney Higa; Stuart Kwan; Suwat Chitphakdibodin; T.R. Vishwanath; Todd Kutzke; Todd West; Vijay Gajjala; Vittorio Bertocci; Wenlong Dong; Yann Christensen; Yavor Georgiev &lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8573905" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>WCF Security Resources</title><link>http://blogs.msdn.com/jmeier/archive/2008/05/23/wcf-security-resources.aspx</link><pubDate>Fri, 23 May 2008 20:45:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8540469</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8540469.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8540469</wfw:commentRss><description>&lt;p&gt;If you're building Web services or if you're implementing &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" target="_blank"&gt;SOA&lt;/a&gt; on the Microsoft platform , then you're probably either working with or exploring &lt;a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation" target="_blank"&gt;WCF&lt;/a&gt; (Windows Communication Foundation.)&amp;nbsp;&amp;nbsp; When we started our &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;patterns &amp;amp; practices WCF Security Guidance project&lt;/a&gt;, one of the first things I did was compile a list of WCF security resources for our team.&amp;nbsp; This helped us quickly ramp up and as well as see gaps.&amp;nbsp; One thing that surprised me is how much is available in the product documentation, if you know where to look.&amp;nbsp; Here's a preliminary look at our WCF Security resources index which we'll include in our WCF Security Guide:&amp;nbsp; &lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;Microsoft&lt;br&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731079.aspx" target="_blank"&gt;MSDN Library - Fundamental Windows Communication Foundation Concepts&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms732362.aspx" target="_blank"&gt;MSDN Library – Windows Communication Foundation Security&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms735093.aspx" target="_blank"&gt;WCF Security Documentation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Community&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.devx.com/codemag/Article/33342" target="_blank"&gt;DevX.com - Fundamentals of WCF Security, by Michèle Leroux Bustamante&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.theserverside.net/tt/articles/showarticle.tss?id=WCFSecurityLearningGuide" target="_blank"&gt;Server Side - WCF Security Learning Guide ,by Brent Sheets&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Articles&lt;br&gt;&lt;br&gt;&lt;/strong&gt;Microsoft&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa480245.aspx" target="_blank"&gt;MSDN Library - The .NET Developer's Guide to Identity, by Keith Brown&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163434.aspx" target="_blank"&gt;MSDN Magazine - Identity - Secure Your ASP.NET Apps And WCF Services With Windows CardSpace by Michèle Leroux Bustamante&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163357.aspx" target="_blank"&gt;MSDN Magazine - IIS 7.0 - Extend Your WCF Services Beyond HTTP With WAS by Dominick Baier, Christian Weyer, and Steve Maine&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163366.aspx" target="_blank"&gt;MSDN Magazine - Security Briefs - Exploring Claims-Based Identity - Keith Brown&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163531.aspx" target="_blank"&gt;MSDN Magazine - Security Briefs - Limited User Problems and Split Knowledge, By Keith Brown&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163570.aspx" target="_blank"&gt;MSDN Magazine - Security Briefs - Security in Windows Communication Foundation, by Keith Brown&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163447.aspx" target="_blank"&gt;MSDN Magazine - Service Station - WCF Messaging Fundamentals by Aaron Skonnard&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Community&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.devx.com/codemag/Article/33342" target="_blank"&gt;DevX.com - Fundamentals of WCF Security, by Michèle Leroux Bustamante&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel" target="_blank"&gt;TheServerSide.NET - Building a Claims-Based Security Model in WCF, by Michele Leroux Bustamente&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.theserverside.net/news/thread.tss?thread_id=45499" target="_blank"&gt;TheServerSide.NET - Building a Claims-Based Security Model in WCF - Part 2, by Michele Leroux Bustamente&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.theserverside.net/tt/articles/showarticle.tss?id=SecuringWCFService" target="_blank"&gt;TheServerSide.NET - Securing Your WCF Service, by William Tay&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.topxml.com/code/cod-72_10192_biztalk-and-wcf-part-ii-security-patterns.aspx" target="_blank"&gt;TopXML - BizTalk and WCF: Part II, Security Patterns, by Richard Seroter&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Blogs&lt;/strong&gt;  &lt;p&gt;Microsoft&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx" target="_blank"&gt;J.D. Meier&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.identityblog.com/" target="_blank"&gt;Kim Cameron&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://kennyw.com/category/indigo/" target="_blank"&gt;Kenny Wolf&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/drnick/" target="_blank"&gt;Nicholas Allen&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/ralph.squillace" target="_blank"&gt;Ralph Squillace&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/" target="_blank"&gt;Steve Maine&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/blogs/tjanczuk/" target="_blank"&gt;Tomasz Janczuk&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/vbertocci/" target="_blank"&gt;Vittorio Bertocci&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/wenlong" target="_blank"&gt;Wenlong Dong&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Community&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/" target="_blank"&gt;Dominick Baier&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/blogs/keith" target="_blank"&gt;Keith Brown&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.thatindigogirl.com/" target="_blank"&gt;Michèle Leroux Bustamante&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.winterdom.com/weblog" target="_blank"&gt;Thomas Restrepo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Channel9&lt;br&gt;&lt;/strong&gt;&lt;br&gt;Podcasts&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=173405" target="_blank"&gt;ARCast - Secure, Reliable Transacted Messaging with WCF (Part 1)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=173830" target="_blank"&gt;ARCast - Secure, Reliable Transacted Messaging with WCF (Part 2)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ARCast.TV&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=347826" target="_blank"&gt;ARCast.TV - WCF Session Behavior from Slovenia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Videos&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/tags/WS-Trust" target="_blank"&gt;Vittorio Bertocci: WS-Trust - Under the Hood&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Tags&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://channel9.msdn.com/tags/WCF" target="_blank"&gt;WCF tag&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt; (MSDN Product Documentation) &lt;p&gt;Overview&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733128.aspx" target="_blank"&gt;Architecture&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731069.aspx" target="_blank"&gt;Concepts&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731204.aspx" target="_blank"&gt;Distributed Application Security&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms735093.aspx" target="_blank"&gt;Overview&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms788756.aspx" target="_blank"&gt;Security Architecture&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731846.aspx" target="_blank"&gt;Terminology&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Guidance&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731983.aspx" target="_blank"&gt;Best Practices&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731093.aspx" target="_blank"&gt;Best Practices for Queued Communication&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733795.aspx" target="_blank"&gt;Best Practices for Reliable Sessions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Scenarios&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730301.aspx" target="_blank"&gt;Common Scenarios&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms729851.aspx" target="_blank"&gt;Identity Model Scenarios&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Threats and Countermeasures&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731086.aspx" target="_blank"&gt;Threats and Countermeasures&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Topics&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731669.aspx" target="_blank"&gt;Auditing&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733082.aspx" target="_blank"&gt;Authentication&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733071.aspx" target="_blank"&gt;Authorization&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733106.aspx" target="_blank"&gt;Authorization Mechanisms&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731172.aspx" target="_blank"&gt;Bindings and Security&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms729851.aspx" target="_blank"&gt;Claims-Based Authorization&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731734.aspx" target="_blank"&gt;Configuration Schema - Configuration Schema&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730908.aspx" target="_blank"&gt;Federation and Issued Tokens&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms729846.aspx" target="_blank"&gt;Hosting&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730088.aspx" target="_blank"&gt;Impersonation and Delegation&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms788971.aspx" target="_blank"&gt;Impersonation with Transport Security&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733137.aspx" target="_blank"&gt;Message Security in WCF&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb412175.aspx" target="_blank"&gt;Partial Trust&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733136.aspx" target="_blank"&gt;Reliable Sessions Overview&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733083.aspx" target="_blank"&gt;SAML Tokens and Claims&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733121.aspx" target="_blank"&gt;Security Capabilities with Custom Bindings&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731107.aspx" target="_blank"&gt;Secure Conversations and Secure Sessions&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734736.aspx" target="_blank"&gt;Securing Services and Clients&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734679.aspx" target="_blank"&gt;SSL&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms729700.aspx" target="_blank"&gt;Transport Security Overview&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731899.aspx" target="_blank"&gt;X.509 Certificates&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;How Tos&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734737.aspx" target="_blank"&gt;How to: Audit Windows Communication Foundation Security Events&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730131.aspx" target="_blank"&gt;How to: Configure Credentials on a Federation Service&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa347715.aspx" target="_blank"&gt;How to: Configure a Local Issuer&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733791.aspx" target="_blank"&gt;How to: Configure a Port with an SSL Certificate&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702627.aspx" target="_blank"&gt;How to: Consistently Reference X.509 Certificates&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730305.aspx" target="_blank"&gt;How to: Create a Custom Binding Using the SecurityBindingElement&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731690.aspx" target="_blank"&gt;How to: Create a Federated Client&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733783.aspx" target="_blank"&gt;How to: Create a Secure Session&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733095.aspx" target="_blank"&gt;How to: Create a Security Token Service&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731814.aspx" target="_blank"&gt;How to: Create a Stateful Security Context Token for a Secure Session&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734664.aspx" target="_blank"&gt;How to: Create a Supporting Credential&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733813.aspx" target="_blank"&gt;How to: Create Temporary Certificates for Use During Development&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa347982.aspx" target="_blank"&gt;How to: Create a WSFederationHttpBinding&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms735116.aspx" target="_blank"&gt;How to: Create a Custom Reliable Session Binding with HTTPS&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa738768.aspx" target="_blank"&gt;How to: Disable Encryption of Digital Signatures&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731827.aspx" target="_blank"&gt;How to: Disable Secure Sessions on a WSFederationHttpBinding&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733063.aspx" target="_blank"&gt;How to: Enable Message Replay Detection&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms733049.aspx" target="_blank"&gt;How to: Exchange Messages Within a Reliable Session&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731090.aspx" target="_blank"&gt;How to: Impersonate a Client on a Service&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702621.aspx" target="_blank"&gt;How to: Make X.509 Certificates Accessible to WCF&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702761.aspx" target="_blank"&gt;How to: Obtain a Certificate (WCF)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731200.aspx" target="_blank"&gt;How to: Restrict Access with the PrincipalPermissionAttribute Class&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734695.aspx" target="_blank"&gt;How to: Retrieve the Thumbprint of a Certificate&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702650.aspx" target="_blank"&gt;How to: Secure Messages within Reliable Sessions&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734673.aspx" target="_blank"&gt;How to: Secure a Service with Windows Credentials&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms788968.aspx" target="_blank"&gt;How to: Secure a Service with an X.509 Certificate&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730328.aspx" target="_blank"&gt;How to: Set Up a Signature Confirmation&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa738468.aspx" target="_blank"&gt;How to: Set a Max Clock Skew&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa738659.aspx" target="_blank"&gt;How to: Specify the Certificate Authority Certificate Chain Used to Verify Signatures (WCF)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms734774.aspx" target="_blank"&gt;How to: Use the ASP.NET Authorization Manager Role Provider with a Service&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms731049.aspx" target="_blank"&gt;How to: Use the ASP.NET Membership Provider&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702542.aspx" target="_blank"&gt;How to: Use the ASP.NET Role Provider with a Service&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702565.aspx" target="_blank"&gt;How to: Use a Custom User Name and Password Validator&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb885138.aspx" target="_blank"&gt;How to: Use Multiple Security Tokens of the Same Type&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms789011.aspx" target="_blank"&gt;How to: Use Transport Security and Message Credentials&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms788967.aspx" target="_blank"&gt;How to: View Certificates with the MMC Snap-in&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Guides &lt;/strong&gt; &lt;p&gt;Community&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.dasblonde.net/downloads/sessions/WCFSecurityFundamentals.pdf" target="_blank"&gt;dasblonde.net - WCF Security Fundamentals, by Michèle Leroux Bustamante&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.theserverside.net/tt/articles/showarticle.tss?id=WCFSecurityLearningGuide" target="_blank"&gt;Server Side - WCF Security Learning Guide, by Brent Sheets&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Posts&lt;/strong&gt;  &lt;p&gt;Microsoft&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/astrauss/archive/2006/10/27/wcf-let-s-start-the-dialogue.aspx" target="_blank"&gt;Alexander Strauss&amp;nbsp;&amp;nbsp; - WCF - Let's Start The Dialogue&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/02/18/how-to-consume-wcf-using-ajax-without-asp-net.aspx" target="_blank"&gt;Alik Levine&amp;nbsp; - How To Consume WCF Using AJAX Without ASP.NET&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Community&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelAuthorizationPoliciesContextAndClaimsTransformation.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Authorization Policies, Context and Claims Transformation&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelCreatingCustomClaimSets.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Creating Custom Claim Sets&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelTypicalOperationsOnClaimSets.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Typical Operations on Claim Sets&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelWindowsAndX509CertificateClaimSets.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Windows and X509Certificate Claim Sets&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelInspectingClaimSets.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Inspecting Claim Sets&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelClaimSets.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Claim Sets&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UsingIdentityModelClaims.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Using IdentityModel: Claims&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/BeCarefulWithServiceAuthorizationManagerCheckAccess.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - Be careful with ServiceAuthorizationManager.CheckAccess()&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.leastprivilege.com/UserNameSupportingTokenInWCF.aspx" target="_blank"&gt;Dominick Baier&amp;nbsp; - UserName SupportingToken in WCF&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://weblogs.asp.net/paolopia/archive/2005/12/08/432658.aspx" target="_blank"&gt;Paolo Pialorsi - WCF Custom Authentication and Impersonation&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.winterdom.com/weblog/CommentView,guid,d8954fbc-3c04-441c-8d81-9e98e70a8580.aspx" target="_blank"&gt;Tomas Restrepo&amp;nbsp; - WCF Configuration Complexity&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;patterns &amp;amp; practices&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/servicefactory/Release/ProjectReleases.aspx?ReleaseId=8814" target="_blank"&gt;WCF Security Guidance Package&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Product Support Services (PSS)&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa702636.aspx" target="_blank"&gt;WCF Troubleshooting Quickstart&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Samples&lt;br&gt;&lt;br&gt;&lt;/strong&gt;Microsoft&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms752239.aspx" target="_blank"&gt;Basic Windows Communication Foundation Technology Samples&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms751514.aspx" target="_blank"&gt;Windows Communication Foundation Samples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Community&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://weblogs.asp.net/paolopia/archive/2007/12/16/wcf-security-full-demo.aspx" target="_blank"&gt;WCF Security Full Demo&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Videos&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/seminar/shared/asp/view.asp?url=/msdntv/episodes/en/20060615wcfcv/manifest.xml&amp;amp;rate=2&amp;amp;WMPVer=10.0.0.3709" target="_blank"&gt;MSDN TV - Windows Communication Foundation Bindings and Channels by Clemens Vastor&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032344349&amp;amp;CountryCode=US" target="_blank"&gt;MSDN Webcast: Windows Communication Foundation Top to Bottom (Part 10 of 15): Security Fundamentals (Level 200)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Web Casts&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;MSDN Support WebCasts&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/907388/en-us" target="_blank"&gt;MSDN Support WebCast: Building distributed services on the Windows Communication Foundation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8540469" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>patterns &amp; practices WCF Security Practices at a Glance Now Available</title><link>http://blogs.msdn.com/jmeier/archive/2008/05/09/patterns-practices-wcf-security-practices-at-a-glance-now-available.aspx</link><pubDate>Fri, 09 May 2008 23:53:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8481995</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8481995.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8481995</wfw:commentRss><description>&lt;p&gt;For this week's release in our &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;patterns &amp;amp; practices WCF Security Guidance project,&lt;/a&gt; we released our first version of our &lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Practices%20at%20a%20Glance" target="_blank"&gt;WCF Security Practices at a Glance&lt;/a&gt;.&amp;nbsp; Practices At a Glance gives you a bird's-eye view of how to perform common tasks.&amp;nbsp; They are scannable and outcome-driven so that you can quickly browse the problem/solution pairs.&amp;nbsp; Rather than a laundry list of granular tasks, we organize them by our Web Services Security frame (still evolving.) &lt;p&gt;&lt;strong&gt;Categories&lt;br&gt;&lt;/strong&gt;Here's how we grouped our WCF Security Practices at a Glance so far: &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Auditing and Logging&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Authorization&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Configuration Management&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Deployment Considerations&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Exception Management&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Impersonation/Delegation &lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Input Validation&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Message Security &lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Proxy Considerations &lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Sensitive Data&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Transport Security&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Here's a snapshot of the problems solved from our Practices At a Glance, but you can see our answers explained at our WCF Security Guidance project site. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Auditing and Logging&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to audit authentication events&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to audit authorization events&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to enable WCF message logging&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to enable WCF tracing&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to use Health Monitoring in WCF &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to view log information&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to view trace information&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to log traces to a WMI provider&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to turn off audit failure suppression&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to authenticate users against the SQL Membership Provider&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authenticate users against Active Directory&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authenticate users against Active Directory without windows authentication&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authenticate users with certificates&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to map certificates with windows accounts&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authenticate users against a custom user store&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authenticate users with Kerberos direct to support non-WCF clients with windows authentication&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authorization&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to authorize imperatively&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authorize declaratively&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authorize users against Windows groups&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authorize users against Windows groups using the AspNetWindowsTokenRoleProvider&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authorize users against the SQL Role Provider&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to authorize users against the ASP.Net Role Provider&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to assign the current principal with IAuthorizationPolicy to allow authorization using custom authentication&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Configuration Management&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to encrypt sensitive data in your configuration files&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to run your service under a specific identity&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create a service account for your WCF service&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to stop clients from referencing your service&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to protect against message replay attacks&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Deployment Considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to configure certificates to enable SSL in IIS&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to map Windows accounts with certificates&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create a Service Principle Name (SPN)&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to configure WCF for NATs and Firewalls&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create an X.509 certificate&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Exception Management&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to shield exception information with fault contracts&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create an error handler to log details of faults for auditing purposes&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to handle unhandled exceptions in downstream services&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to throw an exception with complex types or data contracts with a fault exception&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to handle unknown faults in a service &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to implement a data contract to propagate exception details for debugging purposes&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to implement fault contracts in call back functions&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Hosting &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to host WCF in IIS&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to host WCF in a Windows service&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to self-host WCF&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to configure a least-privilege account to host your service&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Impersonation/Delegation&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to choose between trusted subsystem and impersonation/delegation &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to impersonate the original caller when using Windows authentication&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to impersonate programmatically in WCF &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to impersonate declaratively in WCF&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to delegate the original caller to call backend services when using Windows authentication&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to impersonate the original caller without Windows authentication&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to impersonate the original caller using S4U Kerberos extensions.&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to delegate the original caller using S4U Kerberos extensions.&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to impersonate and delegate using LogonUser Windows API&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to flow the original caller from an ASP.NET client to WCF&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to control access to a remote resource based on the original callers identity.&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Input Validation&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to protect your service from malicious messages&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to protect your service from malicious input&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to protect your service from denial of service attacks&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate parameters with parameter inspectors&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate parameters with message inspectors using schemas&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate data contracts with message inspectors using schemas&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate message contracts with message inspectors using schemas&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to use regular expressions validate format, range and length in schemas&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate inbound messages on a service&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate outbound messages on a service&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate outbound messages on the client&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate inbound messages on the client&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate input parameters&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to validate output parameters&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Message Security&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to use message security&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to partially encrypt a message&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to use out-of-band credentials with message security&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Proxy Considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to avoid proxy spoofing&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to expose service metadata for your clients&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create a proxy to a service hosted in IIS that requires certificate authentication and transport security&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Sensitive Data&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to encrypt sensitive data in configuration files&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to protect sensitive data in memory&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to protect sensitive data on the network&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Transport Security&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to use transport security&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to use secure conversations in WCF&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;X.509 Certificates&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How to create a temporary X.509 certificate for transport security&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create a temporary X.509 certificate for message security&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to create a temporary X.509 certificate for certificate authentication&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/05/01/6-new-patterns-practices-wcf-security-how-tos.aspx"&gt;6 New patterns &amp;amp; practices WCF Security How Tos&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/25/patterns-practices-wcf-security-questions-and-answers-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Questions and Answers Now Available&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/17/patterns-practices-wcf-3-5-security-guidelines-now-available.aspx"&gt;patterns &amp;amp; practices WCF 3.5 Security Guidelines Now Available&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/11/patterns-practices-wcf-security-guidance-updated-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance: Updated Application Scenarios&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Application Scenarios&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance Now Available&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8481995" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>6 New patterns &amp; practices WCF Security How Tos</title><link>http://blogs.msdn.com/jmeier/archive/2008/05/01/6-new-patterns-practices-wcf-security-how-tos.aspx</link><pubDate>Thu, 01 May 2008 23:12:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8447554</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8447554.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8447554</wfw:commentRss><description>&lt;p&gt;We have 6 new How Tos for this week's release of our &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;patterns &amp;amp; practices WCF Security Guidance Project&lt;/a&gt;.  &lt;p&gt;&lt;strong&gt;WCF Security How Tos&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Perform%20Input%20Validation%20in%20WCF&amp;amp;referringTitle=How%20Tos" target="_blank"&gt;How To - Perform Input Validation in WCF&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Perform%20Message%20Validation%20with%20Schemas%20in%20WCF&amp;amp;referringTitle=How%20Tos" target="_blank"&gt;How To - Perform Message Validation with Schemas in WCF&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20basicHttpBinding%20with%20Windows%20Authentication%20and%20TransportCredentialOnly%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target="_blank"&gt;How To - Use basicHttpBinding with Windows Authentication and TransportCredentialOnly in WCF from Windows Forms&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20Certificate%20Authentication%20and%20Message%20Security%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target="_blank"&gt;How To - Use Certificate Authentication and Message Security in WCF calling from Windows Forms&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20netTcpBinding%20with%20Windows%20Authentication%20and%20Message%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target="_blank"&gt;How To - Use netTcpBinding with Windows Authentication and Message Security in WCF from Windows Forms&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20wsHttpBinding%20with%20Username%20Authentication%20and%20TransportWithMessageCredential%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target="_blank"&gt;How To - Use wsHttpBinding with Username Authentication and TransportWithMessageCredential in WCF calling from Windows Forms&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;My Related Posts&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/25/patterns-practices-wcf-security-questions-and-answers-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Questions and Answers Now Available&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/17/patterns-practices-wcf-3-5-security-guidelines-now-available.aspx"&gt;patterns &amp;amp; practices WCF 3.5 Security Guidelines Now Available&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/11/patterns-practices-wcf-security-guidance-updated-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance: Updated Application Scenarios&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Application Scenarios&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance Now Available&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8447554" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>patterns &amp; practices WCF Security Questions and Answers Now Available</title><link>http://blogs.msdn.com/jmeier/archive/2008/04/25/patterns-practices-wcf-security-questions-and-answers-now-available.aspx</link><pubDate>Fri, 25 Apr 2008 05:13:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8423239</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8423239.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8423239</wfw:commentRss><description>&lt;p&gt;What are your key security-related questions with WCF?&amp;nbsp; More importantly, what are the answers?&amp;nbsp; For this week's release of our &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;WCF Security Guidance Project&lt;/a&gt;, we posted our &lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Questions%20and%20Answers&amp;amp;referringTitle=Home" target="_blank"&gt;WCF Security Q&amp;amp;A (Questions and Answers)&lt;/a&gt; to CodePlex.&amp;nbsp; &lt;p&gt;To create the questions and answers set, we first gathered and organized recurring questions from our field, support, customers and forums.&amp;nbsp; We then worked through to create precise answers.&amp;nbsp; What you get is a browsable collection of questions and answers, organized by our security frame.&amp;nbsp;&amp;nbsp; The security frame maps to actionable categories of your application. &lt;p&gt;Here's a snapshot of the questions from our Q&amp;amp;A, but you can see our answers explained at our WCF Security Guidance project site. &lt;p&gt;&lt;strong&gt;Design Considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I decide on an authentication strategy?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I decide on an authorization strategy?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use message security vs. transport security?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use my existing Active Directory infrastructure?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What bindings should I use over the Internet?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What bindings should I use over the Intranet?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use resource-based authorization vs. roles-based authorization?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I impersonate the original caller?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I flow the original caller’s identity to back-end resources?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I migrate to WCF from an ASMX web service?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I migrate to WCF from a COM application?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I migrate to WCF from a DCOM application?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I migrate to WCF from a WSE application?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Auditing and Logging&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;What WCF Service security events should be logged?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I enable logging and auditing in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I enable auditing in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I stop my service if there has been an auditing failure?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I log important business events in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I implement log throttling in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use Health Monitoring Feature with WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my log files?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How to I pass user identity information in a message for auditing purpose?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I decide on an authentication strategy in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use brokered authentication?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use the SQL Server Membership provider?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I authenticate against Active Directory?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I authenticate against a SQL store?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I authenticate against a custom store?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect passwords in my user store? &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use certificate authentication with X.509 certificates?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is the most common authentication scenario for intranet applications?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is the most common authentication scenario for internet applications?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I support authentication for multiple client types? &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is federated security?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I send credentials in the message when I am using transport security?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I avoid cleartext passwords?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authorization&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I decide on an authorization strategy in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What’s the difference between resource-based, roles-based and claims-based authorization?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use Windows groups for role authorization in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use the SQL Role provider for ASPNET role authorization in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use the Windows Token role provider for ASPNET role authorization in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use the Authorization Store role provider for ASPNET role authorization in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What’s the difference between declarative and imperative roles authorization?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I restrict access to WCF operations to specific Windows users?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I associate roles with a certificate?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is a service principle name (SPN)?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I create a service principle name (SPN)?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Bindings&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;What is a binding?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What bindings are available?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Which bindings are best suited for the Internet?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Which bindings are best suited for the Intranet?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I choose an appropriate binding? &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Configuration Management &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I encrypt sensitive data in WCF configuration file?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I run a WCF Service with a particular identity?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I create a service account for running my WCF Service?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use a configuration file versus the WCF object model?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is a metadata exchange (MEX) binding?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I keep clients from referencing my service? &lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Exception Management &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I implement a global exception handler?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is a fault contract?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I define a fault contract?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I avoid sending exception details to the client?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Hosting &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I configure a least privileged account to host my service?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I host my service in IIS?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I host my service in a Windows service?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I self-host my service? &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Impersonation/Delegation &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What are my impersonation options?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is the difference between impersonation and delegation?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I impersonate the original caller for an operation call?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I temporarily impersonate the original caller in an operation call?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I impersonate a specific (fixed) identity?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is constrained delegation?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is protocol transition?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I flow original caller from ASP.NET client to WCF Service?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is the difference between declarative and programmatic impersonation?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is the trusted subsystem model?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I flow the original caller to back-end code? &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I control access to a remote resource based on the original caller’s identity?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Input/Data Validation &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I implement input and data validation in WCF?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is schema validation?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;What is parameter validation?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Should I validate before or after message serialization?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my service from denial of service attacks?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my service from malicious input attacks?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my service from malformed messages? &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Message Protection &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use message security?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use transport security?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my message when there are intermediaries routing my message?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my message when there are multiple protocols used during message&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;transit?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I implement partial message encryption?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Proxy Considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;When should I use a channel factory?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When do I need to expose a metadata exchange endpoint for my service?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I avoid proxy spoofing?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Sensitive Data &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I protect sensitive data in configuration files?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect sensitive data in memory?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect my metadata?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect sensitive data from being read on the wire?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I protect sensitive data from being tampered with on the wire?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I authenticate a message was sent by the expected sender?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I encrypt data within my message?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;X.509 Certificates&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;How do I create X.509 certificates?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Do I need to create a certificate signed by the root CA certificate?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I use X.509 certificate revocation?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I authenticate users with X.509 certificates, and then perform role-based access control using an Active Directory domain?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Deployment Considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;What are the additional considerations for using WCF in a webfarm?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I configure WCF for NATs and Firewalls?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I configure Active Directory groups and accounts for role-based authorization checks?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I create an X.509 certificate?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;When should I use a Service Principle Name (SPN)?&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;How do I configure a least privileged account for my service?&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/17/patterns-practices-wcf-3-5-security-guidelines-now-available.aspx"&gt;patterns &amp;amp; practices WCF 3.5 Security Guidelines Now Available&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/11/patterns-practices-wcf-security-guidance-updated-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance: Updated Application Scenarios&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Application Scenarios&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance Now Available&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8423239" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>patterns &amp; practices WCF 3.5 Security Guidelines Now Available</title><link>http://blogs.msdn.com/jmeier/archive/2008/04/17/patterns-practices-wcf-3-5-security-guidelines-now-available.aspx</link><pubDate>Thu, 17 Apr 2008 18:38:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8403465</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8403465.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8403465</wfw:commentRss><description>&lt;p&gt;For this week's release in our &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;patterns &amp;amp; practices WCF Security Guidance project&lt;/a&gt;, we released our first version of our &lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Guidelines" target="_blank"&gt;WCF 3.5 Security Guidelines&lt;/a&gt;.&amp;nbsp; Each guideline is a nugget of what to do, why, and how.&amp;nbsp; The goal of the guideline format is to take a lot of information, compress it down, and turn insight into action.  &lt;p&gt;The downside is that it's tough to create prescriptive guidelines that are generic enough to be reusable, but specific enough to be helpful.&amp;nbsp; The upside is that customers find the guidelines help them cut through a lot of information and take action.&amp;nbsp; We contextualize the guidelines as much as we can, but ultimately you're in the best position to do the pattern matching to find which guidelines are relevant for your scenarios, and how you need to tailor them.  &lt;p&gt;Here's a snapshot of the guidelines, but you can see our security guidelines explained at our WCF Security Guidance project site.  &lt;p&gt;&lt;strong&gt;Categories&lt;/strong&gt;&lt;br&gt;Our WCF Security guidelines are organized using the following buckets:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Auditing and Logging &lt;/li&gt; &lt;li&gt;Authentication &lt;/li&gt; &lt;li&gt;Authorization &lt;/li&gt; &lt;li&gt;Binding &lt;/li&gt; &lt;li&gt;Configuration Management &lt;/li&gt; &lt;li&gt;Exception Management &lt;/li&gt; &lt;li&gt;Hosting &lt;/li&gt; &lt;li&gt;Impersonation and Delegation &lt;/li&gt; &lt;li&gt;Input/Data Validation &lt;/li&gt; &lt;li&gt;Proxy Considerations &lt;/li&gt; &lt;li&gt;Deployment considerations&amp;nbsp; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Auditing and Logging&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Use WCF auditing to audit your service&lt;/li&gt; &lt;li&gt;If non-repudiation is important, consider setting SuppressAuditFailure property to false&lt;/li&gt; &lt;li&gt;Use message logging to log operations on your service&lt;/li&gt; &lt;li&gt;Instrument for user management events&lt;/li&gt; &lt;li&gt;Instrument for significant business operations &lt;/li&gt; &lt;li&gt;Protect log files from unauthorized access&lt;/li&gt; &lt;li&gt;Do not log sensitive information &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authentication &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Know your authentication options&lt;/li&gt; &lt;li&gt;Use Windows Authentication when you can&lt;/li&gt; &lt;li&gt;If you support non-WCF clients using windows authentication and message security, consider using the Kerberos direct option&lt;/li&gt; &lt;li&gt;If your users are in AD, but you can’t use windows authentication, consider using username authentication &lt;/li&gt; &lt;li&gt;If your clients have certificates, consider using client certificate authentication&lt;/li&gt; &lt;li&gt;If you need to streamline certificate distribution to your clients for message encryption, consider using the negotiate credentials option&lt;/li&gt; &lt;li&gt;If your users are in a custom store, consider using username authentication with a custom validator&lt;/li&gt; &lt;li&gt;If your users are in a SQL membership store, use the SQL Membership Provider&lt;/li&gt; &lt;li&gt;If your partner applications need to be authenticated when calling WCF services, use client certificate authentication. &lt;/li&gt; &lt;li&gt;If you are using username authentication, use SQL Server Membership Provider instead of custom authentication&lt;/li&gt; &lt;li&gt;If you need to support intermediaries and a variety of transports between client and service, use message security to protect credentials &lt;/li&gt; &lt;li&gt;If you are using username authentication, validate user login information&lt;/li&gt; &lt;li&gt;Do not store passwords directly in the user store&lt;/li&gt; &lt;li&gt;Enforce strong passwords &lt;/li&gt; &lt;li&gt;Protect access to your credential store&lt;/li&gt; &lt;li&gt;If you are using Windows Forms to connect to WCF, do not cache credentials &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authorization &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you use ASP.NET roles, use the ASP.NET Role Provider&lt;/li&gt; &lt;li&gt;If you use windows groups for authorization, use ASP.NET Role Provider with AspNetWindowsTokenRoleProvider&lt;/li&gt; &lt;li&gt;If you store role information in SQL, consider using the SQL Server Role Provider for roles authorization&lt;/li&gt; &lt;li&gt;If you store role information in Windows Groups, consider using the WCF PrincipalPermissionAttribute class for roles authorization&lt;/li&gt; &lt;li&gt;If you need to authorize access to WCF operations, use declarative authorization&lt;/li&gt; &lt;li&gt;If you need to perform fine-grained authorization based on business logic, use imperative authorization &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Binding &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you need to support clients over the internet, consider using wsHttpBinding.&lt;/li&gt; &lt;li&gt;If you need to expose your WCF service to legacy clients as an ASMX web service, use basicHttpBinding&lt;/li&gt; &lt;li&gt;If you need to support remote WCF clients within an intranet, consider using netTcpBinding.&lt;/li&gt; &lt;li&gt;If you need to support local WCF clients, consider using netNamedPipeBinding.&lt;/li&gt; &lt;li&gt;If you need to support disconnected queued calls, use netMsmqBinding.&lt;/li&gt; &lt;li&gt;If you need to support bidirectional communication between WCF Client and WCF service, use wsDualHttpBinding. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Configuration Management&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Use Replay detection to protect against message replay attacks&lt;/li&gt; &lt;li&gt;If you host your service in a Windows service, expose a metadata exchange (mex) binding&lt;/li&gt; &lt;li&gt;If you don’t want to expose your WSDL, turn off HttpGetEnabled and metadata exchange (mex)&lt;/li&gt; &lt;li&gt;Manage bindings and endpoints in config not code&lt;/li&gt; &lt;li&gt;Associate names with the service configuration when you create service behavior, endpoint behavior, and binding configuration&lt;/li&gt; &lt;li&gt;Encrypt configuration sections that contain sensitive data &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Exception Management&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Use structured exception handling&lt;/li&gt; &lt;li&gt;Do not divulge exception details to clients in production&lt;/li&gt; &lt;li&gt;Use a fault contract to return error information to clients&lt;/li&gt; &lt;li&gt;Use a global exception handler to catch unhandled exceptions &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Hosting &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you are hosting your service in a Windows Service, use a least privileged custom domain account&lt;/li&gt; &lt;li&gt;If you are hosting your service in IIS, use a least privileged service account&lt;/li&gt; &lt;li&gt;Use IIS to host your service unless you need to use a transport that IIS does not support &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Impersonation and Delegation&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Know the impersonation options&lt;/li&gt; &lt;li&gt;If you have to flow the original caller, use constrained delegation&lt;/li&gt; &lt;li&gt;Consider LogonUser when you need to impersonate but you don’t have trusted delegation&lt;/li&gt; &lt;li&gt;Consider S4U when you need a Windows token and you don’t have the original caller’s credentials&lt;/li&gt; &lt;li&gt;Use programmatic impersonation to impersonate based on business logic&lt;/li&gt; &lt;li&gt;When impersonating programmatically be sure to revert to original context&lt;/li&gt; &lt;li&gt;Only impersonate on operations that require it&lt;/li&gt; &lt;li&gt;Use OperationBehavior to impersonate declaratively &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Input/Data Validation&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you need to validate parameters, use parameter inspectors&lt;/li&gt; &lt;li&gt;If your service has operations that accept message or data contracts, use schemas to validate your messages&lt;/li&gt; &lt;li&gt;If you need to do schema validation, use message inspectors &lt;/li&gt; &lt;li&gt;Validate operation parameters for length, range, format and type&lt;/li&gt; &lt;li&gt;Validate parameter input on the server &lt;/li&gt; &lt;li&gt;Validate service responses on the client&lt;/li&gt; &lt;li&gt;Do not rely on client-side validation&lt;/li&gt; &lt;li&gt;Avoid user-supplied file name and path input&lt;/li&gt; &lt;li&gt;Do not echo untrusted input &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Proxy Considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Publish your metadata over HTTPS to protect your clients from proxy spoofing&lt;/li&gt; &lt;li&gt;If you turn off mutual authentication, be aware of service spoofing &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Deployment considerations&lt;/strong&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Do not use temporary certificates in production&lt;/li&gt; &lt;li&gt;If you are using a custom domain account in the identity pool for your WCF application, create an SPN for Kerberos to authenticate the client.&lt;/li&gt; &lt;li&gt;If you are using a custom service account and need to use trusted for delegation, create an SPN&lt;/li&gt; &lt;li&gt;If you are hosting your service in a Windows Service, using a custom domain identity, and ASP.NET needs to use constrained trusted for delegation when calling the service, create an SPN&lt;/li&gt; &lt;li&gt;Use IIS to host your service unless you need to use a transport that IIS does not support&lt;/li&gt; &lt;li&gt;Use a least privileged account to run your WCF service&lt;/li&gt; &lt;li&gt;Protect sensitive data in your configuration files &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/11/patterns-practices-wcf-security-guidance-updated-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance: Updated Application Scenarios&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Application Scenarios&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance Now Available&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8403465" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>patterns &amp; practices WCF Security Guidance: Updated Application Scenarios</title><link>http://blogs.msdn.com/jmeier/archive/2008/04/11/patterns-practices-wcf-security-guidance-updated-application-scenarios.aspx</link><pubDate>Fri, 11 Apr 2008 06:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8378021</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8378021.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8378021</wfw:commentRss><description>&lt;P&gt;For this week's release in our &lt;A href="http://www.codeplex.com/WCFSecurity" target=_blank mce_href="http://www.codeplex.com/WCFSecurity"&gt;patterns &amp;amp; practices WCF Security Guidance project&lt;/A&gt;, we added new sections to our &lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Application%20Scenarios&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Application%20Scenarios&amp;amp;referringTitle=Home"&gt;WCF Security Application Scenarios&lt;/A&gt;.&amp;nbsp; We added sections for analysis, code and configuration examples.&amp;nbsp; The analysis section explains the rationale behind some of the decisions.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The idea behind the application scenarios is to show you a before and after look of end-to-end solutions.&amp;nbsp; Rather than a single solution, we give you a set of solutions to pick from.&amp;nbsp; The main parameters that vary in each solution include: Intranet vs. Internet, ASP.NET client vs. Windows Forms clients, TCP vs. HTTP, impersonation/delegation vs. trusted subsystem, and AD (domain credentials) vs. a custom user store. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WCF Security Application Scenarios &lt;BR&gt;&lt;/STRONG&gt;Intranet &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%20TCP%29&amp;amp;referringTitle=Application%20Scenarios" target=_blank&gt;Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem TCP)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%2c%20HTTP%29&amp;amp;referringTitle=Application%20Scenarios" target=_blank&gt;Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem, HTTP)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Original%20Caller%2c%20TCP%29&amp;amp;referringTitle=Application%20Scenarios" target=_blank&gt;Intranet – Web to Remote WCF Using Transport Security (Original Caller, TCP)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Windows%20Forms%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28TCP%29&amp;amp;referringTitle=Application%20Scenarios" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Windows%20Forms%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28TCP%29&amp;amp;referringTitle=Application%20Scenarios"&gt;Intranet – Windows Forms to Remote WCF Using Transport Security (TCP)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Internet &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%29&amp;amp;referringTitle=Application%20Scenarios" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%29&amp;amp;referringTitle=Application%20Scenarios"&gt;Internet – Web to Remote WCF Using Transport Security (Trusted Subsystem)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Windows%20Forms%20Client%20Calling%20WCF%20Using%20Message%20Security&amp;amp;referringTitle=Application%20Scenarios" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Windows%20Forms%20Client%20Calling%20WCF%20Using%20Message%20Security&amp;amp;referringTitle=Application%20Scenarios"&gt;Internet – Windows Forms Client Calling WCF Using Message Security&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Note that if there's enough interest and time, we'll add a scenario that shows accessing an existing custom user store (i.e. you aren't using Membership.)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx"&gt;patterns &amp;amp; practices WCF Security Application Scenarios&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx"&gt;patterns &amp;amp; practices WCF Security Guidance Now Available&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8378021" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>patterns and practices WCF Security Application Scenarios</title><link>http://blogs.msdn.com/jmeier/archive/2008/04/04/patterns-and-practices-wcf-security-application-scenarios.aspx</link><pubDate>Fri, 04 Apr 2008 02:40:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8355275</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8355275.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8355275</wfw:commentRss><description>&lt;p&gt;We published an updated set of our WCF Security application scenarios yesterday, as part of our &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;patterns &amp;amp; practices WCF Security guidance project&lt;/a&gt;.&amp;nbsp;&amp;nbsp; Application Scenarios are visual "blueprints" of skeletal solutions for end-to-end deployment scenarios.&amp;nbsp; Each application scenario includes a before and after look at working solutions.&amp;nbsp; While you still need to prototype and test for your scenario, this gives you potential solutions and paths at a glance, rather than starting from scratch.&amp;nbsp; It's a catalog of applications scenarios that you can look through and potentially find your match.  &lt;p&gt;&lt;strong&gt;Intranet&lt;/strong&gt;&lt;br&gt;Common Intranet patterns:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%20TCP%29&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem TCP)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%2c%20HTTP%29&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem, HTTP)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Original%20Caller%2c%20TCP%29&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Intranet – Web to Remote WCF Using Transport Security (Original Caller, TCP)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Intranet%20%u2013%20Windows%20Forms%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28TCP%29&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Intranet – Windows Forms to Remote WCF Using Transport Security (TCP)&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Internet &lt;/strong&gt;&lt;br&gt;Common Internet patterns:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Transport%20Security%20%28Trusted%20Subsystem%29&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Internet – Web to Remote WCF Using Transport Security (Trusted Subsystem)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Web%20to%20Remote%20WCF%20Using%20Message%20Security%20%28Original%20Caller%29&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Internet – Web to Remote WCF Using Message Security (Original Caller)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Internet%20%u2013%20Windows%20Forms%20Client%20Calling%20WCF%20Using%20Message%20Security&amp;amp;referringTitle=Application%20Scenarios" target="_blank"&gt;Internet – Windows Forms Client Calling WCF Using Message Security&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;One Size Does Not Fit All&lt;/strong&gt;&lt;br&gt;We know that one size doesn't fit all, so we create a collection of application scenarios that you can quickly sort through and pattern match against your scenario.&amp;nbsp; It's like a visual menu at a restaurant.&amp;nbsp; The goal is to find a good fit against your parameters versus a perfect fit.&amp;nbsp; It gives you a baseline to start from.&amp;nbsp; They effectively let you preview solutions, before embarking on your journey. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;How We Make Application Scenarios&lt;/strong&gt;&lt;br&gt;First, we start by gathering all the deployment scenarios we can find from customers with working solutions.&amp;nbsp; We use our field, product support, product teams, subject matter experts, and customers.&amp;nbsp; We also check with our internal line of business application solutions.&amp;nbsp; While there's a lot of variations, we look for the common denominators.&amp;nbsp; There's only so many ways to physically deploy servers, so we start there.&amp;nbsp; We group potential solutions by big buckets.&amp;nbsp; &lt;/p&gt; &lt;p&gt;In order to make the solutions meaningful, we pick a focus.&amp;nbsp; For example, with WCF Security, key overarching decisions include authentication, authorization, and secure communication.&amp;nbsp; These decisions span the layers and tiers.&amp;nbsp; We also pay attention to factors that influence your decisions.&amp;nbsp; For example, your role stores and user stores are a big factor.&amp;nbsp; The tricky part is throwing out the details of customer specific solutions, while retaining the conceptual integrity that makes the solution useful. &lt;/p&gt; &lt;p&gt;Next, we create prototypes and we test the end-to-end scenarios in our lab.&amp;nbsp; We do a lot of whiteboarding during this stage for candidate solutions.&amp;nbsp; This is where we spend the bulk of our time, testing paths, finding surprises, and making things work.&amp;nbsp; It's one thing to know what's supposed to work; it's another to make it work in practice.&amp;nbsp; &lt;p&gt;From our working solution, we highlight the insights and actions within the Application Scenario so you can quickly prototype for your particular context.&amp;nbsp; We then share our candidate guidance modules on CodePlex, while we continue reviews across our review loops including field, PSS, customers, product team members, and subject matter experts.&amp;nbsp; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8355275" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>patterns and practices WCF Security Guidance Now Available</title><link>http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx</link><pubDate>Thu, 27 Mar 2008 19:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8339917</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8339917.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8339917</wfw:commentRss><description>&lt;P&gt;Our &lt;A href="http://www.codeplex.com/WCFSecurity" target=_blank mce_href="http://www.codeplex.com/WCFSecurity"&gt;patterns &amp;amp; practices WCF Security Guidance Project&lt;/A&gt; is in progress on CodePlex.&amp;nbsp; This is our first release of prescriptive guidance modules for WCF Security.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How Tos&lt;/STRONG&gt; &lt;BR&gt;Our How Tos give you step by step instructions for performing key tasks:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Create%20and%20Install%20Temporary%20Certificates%20in%20WCF%20for%20Message%20Security%20During%20Development&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Create%20and%20Install%20Temporary%20Certificates%20in%20WCF%20for%20Message%20Security%20During%20Development&amp;amp;referringTitle=How%20Tos"&gt;How To - Create and Install Temporary Certificates in WCF for Message Security During Development&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Create%20and%20Install%20Temporary%20Certificates%20in%20WCF%20for%20Transport%20Security%20during%20Development&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Create%20and%20Install%20Temporary%20Certificates%20in%20WCF%20for%20Transport%20Security%20during%20Development&amp;amp;referringTitle=How%20Tos"&gt;How To - Create and Install Temporary Certificates in WCF for Transport Security During Development&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Impersonate%20the%20Original%20Caller%20in%20WCF%20calling%20from%20Web%20Application&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Impersonate%20the%20Original%20Caller%20in%20WCF%20calling%20from%20Web%20Application&amp;amp;referringTitle=How%20Tos"&gt;How To - Impersonate the Original Caller in WCF calling from Web Application&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Impersonate%20the%20Original%20Caller%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Impersonate%20the%20Original%20Caller%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Impersonate the Original Caller in WCF calling from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20netTcpBinding%20with%20Windows%20Authentication%20and%20Transport%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20netTcpBinding%20with%20Windows%20Authentication%20and%20Transport%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Use netTcpBinding with Windows Authentication and Transport Security in WCF from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20SQL%20Role%20Provider%20with%20Username%20Authentication%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20SQL%20Role%20Provider%20with%20Username%20Authentication%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Use SQL Role Provider with Username Authentication in WCF from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20SQL%20Role%20Provider%20with%20Windows%20Authentication%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20SQL%20Role%20Provider%20with%20Windows%20Authentication%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Use SQL Role Provider with Windows Authentication in WCF from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20Username%20Authentication%20with%20the%20SQL%20Membership%20Provider%20and%20Message%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20Username%20Authentication%20with%20the%20SQL%20Membership%20Provider%20and%20Message%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Use Username Authentication with the SQL Membership Provider and Message Security in WCF from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20wsHttpBinding%20with%20Windows%20Authentication%20and%20Message%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20wsHttpBinding%20with%20Windows%20Authentication%20and%20Message%20Security%20in%20WCF%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Use WsHttpBinding with Windows Authentication and Message Security in WCF from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20wsHttpBinding%20with%20Windows%20Authentication%20and%20Transport%20Security%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%20-%20Use%20wsHttpBinding%20with%20Windows%20Authentication%20and%20Transport%20Security%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=How%20Tos"&gt;How To - Use wsHttpBinding with Windows Authentication and Transport Security in WCF calling from Windows Forms&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Videos &lt;BR&gt;&lt;/STRONG&gt;Our videos step you visually through key guidance:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20How%20to%20Host%20WCF%20in%20a%20Windows%20Service&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20How%20to%20Host%20WCF%20in%20a%20Windows%20Service&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Host WCF in a Windows Service&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20Impersonate%20the%20Original%20Caller%20in%20WCF%20calling%20from%20a%20Windows%20Form&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20Impersonate%20the%20Original%20Caller%20in%20WCF%20calling%20from%20a%20Windows%20Form&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Impersonate the Original Caller in WCF calling from a Windows Form&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20to%3a%20Use%20basicHttpBinding%20with%20Certificate%20Authentication%20from%20Windows%20Forms&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20to%3a%20Use%20basicHttpBinding%20with%20Certificate%20Authentication%20from%20Windows%20Forms&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Use basicHttpBinding with Client certificate in WCF from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20to%3a%20Use%20netTcpBinding%20with%20Windows%20Authentication%20and%20MessageSecurity&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20to%3a%20Use%20netTcpBinding%20with%20Windows%20Authentication%20and%20MessageSecurity&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Use netTcpBinding with Windows Authentication and Message Security&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20to%20Use%20SQL%20Role%20Provider%20with%20Username%20Authentication%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20to%20Use%20SQL%20Role%20Provider%20with%20Username%20Authentication%20in%20WCF%20calling%20from%20Windows%20Forms&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20Use%20WsHttpBinding%20with%20Certificate%20Authentication%20with%20Message%20Security%20%28object%20model%20programming%29%20&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20Use%20WsHttpBinding%20with%20Certificate%20Authentication%20with%20Message%20Security%20%28object%20model%20programming%29%20&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Use WsHttpBinding with Certificate Authentication with Message Security&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20Use%20WsHttpBinding%20with%20Windows%20Authentication%20with%20Message%20Security&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How%20To%3a%20Use%20WsHttpBinding%20with%20Windows%20Authentication%20with%20Message%20Security&amp;amp;referringTitle=Video%20Index"&gt;Video: How To - Use WsHttpBinding with Windows Authentication with Message Security&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;About WCF&lt;/STRONG&gt; &lt;BR&gt;Windows Communication Foundation (WCF) is a service-oriented platform for building and consuming secure, reliable, and transacted services.&amp;nbsp; It unifies the programming models for ASMX, Enterprise services and .NET Remoting.&amp;nbsp; It supports multiple protocols including named pipes, TCP, HTTP, and MSMQ.&amp;nbsp; WCF promotes loose coupling, supports interoperability, and encapsulates the latest web service standards.&amp;nbsp; With WCF, you get flexibility in choosing protocol, message encoding formats, and hosting.&amp;nbsp;&amp;nbsp; For more information, see the &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx"&gt;MSDN WCF Developer Center&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;About the Project&lt;/STRONG&gt; &lt;BR&gt;WCF provides a lot of options and flexibility.&amp;nbsp; The goal of our patterns &amp;amp; practices WCF Security Guidance Project is to find the key combinations of security practices for WCF&amp;nbsp;that work for customers and share them more broadly.&amp;nbsp; At a high-level, you can think of the project in terms of these main buckets:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Application Scenarios&lt;/STRONG&gt; - These are whiteboard solutions for common end-to-end application scenarios. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;How Tos&lt;/STRONG&gt; - These are step-by-step instructions for performing key end-to-end tasks. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Building Codes&lt;/STRONG&gt; - These are our sets of rules and practices.&amp;nbsp; This includes Guidelines, Checklists, and Practices at a Glance. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Reference&lt;/STRONG&gt; - This includes Explained, Cheat Sheets, and Q&amp;amp;A guidance. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The plan is to incrementally share our guidance modules on CodePlex as we go, then build a guide, then port the guidance to MSDN once it's baked.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8339917" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item><item><title>How To: Create a “Hello World” WCF Service Using Visual Studio</title><link>http://blogs.msdn.com/jmeier/archive/2007/10/15/how-to-create-a-hello-world-wcf-service-using-visual-studio.aspx</link><pubDate>Mon, 15 Oct 2007 23:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5463866</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/5463866.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=5463866</wfw:commentRss><description>&lt;P&gt;Here's a quick step through of using WCF in Visual Studio 2005.&amp;nbsp; In this case I used a local machine, running Windows 2003, for the service and the client.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There's lot of possible paths, and this is just one path through.&amp;nbsp; I focused on "Hello World" to run through the basic mechanics, but chose a path to touch enough things that might be interesting to explore another day.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario&lt;/STRONG&gt;&lt;BR&gt;Use Visual Studio 2005 to do a dry run of creating a WCF service hosted in IIS and calling it from a console application on your local development workstation.&amp;nbsp; (Note that you don't need to host WCF in IIS; for example, you could use a surrogate console application.)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Preparation&lt;BR&gt;&lt;/STRONG&gt;In my case, I needed the .NET 3.0 components and the WCF extensions for Visual Studio:&lt;BR&gt;1. &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en"&gt;.NET 3.0 Runtime Components&lt;/A&gt;&lt;BR&gt;2. &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&amp;amp;displaylang=en"&gt;WCF and WPF extensions for Visual studio&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary of Steps&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Step 1.&amp;nbsp; Create the test service 
&lt;LI&gt;Step 2. Add a Hello World Method 
&lt;LI&gt;Step 3.&amp;nbsp; Test your WCF service 
&lt;LI&gt;Step 4.&amp;nbsp; Enable meta-data for your WCF Service. 
&lt;LI&gt;Step 5.&amp;nbsp; Create the test client. 
&lt;LI&gt;Step 6.&amp;nbsp; Add a Web Services reference to your WCF Service. 
&lt;LI&gt;Step 7.&amp;nbsp; Add the namespace to your 
&lt;LI&gt;Step 8. Call your WCF service&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1.&amp;nbsp; Create the test service&lt;/STRONG&gt;&lt;BR&gt;In this step, we'll create a WCF service that uses HTTP bindings, for backward compatibility (non-.NET 3.0 clients)&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;In Visual Studio, click &lt;STRONG&gt;File&lt;/STRONG&gt; -&amp;gt; &lt;STRONG&gt;New Web Site&lt;/STRONG&gt; 
&lt;LI&gt;Select &lt;STRONG&gt;WCF Service&lt;/STRONG&gt; 
&lt;LI&gt;Browse to a directory to store your project: (e.g. D:\Dev\WCF\Test1\Serve ) 
&lt;LI&gt;Enable &lt;STRONG&gt;wsHttpBinding&lt;/STRONG&gt;.&amp;nbsp; To do so, right-click &lt;STRONG&gt;Web.config&lt;/STRONG&gt; and click &lt;STRONG&gt;Edit WCF Configuration ...&lt;/STRONG&gt; Expand &lt;STRONG&gt;Services&lt;/STRONG&gt; &amp;gt; expand &lt;STRONG&gt;MyService&lt;/STRONG&gt; -&amp;gt; expand &lt;STRONG&gt;Endpoints&lt;/STRONG&gt;.&amp;nbsp; Click &lt;STRONG&gt;(Empty Name)&lt;/STRONG&gt;.&amp;nbsp; Change &lt;STRONG&gt;wsHttpBinding&lt;/STRONG&gt; to &lt;STRONG&gt;basicHttpBinding&lt;/STRONG&gt; 
&lt;LI&gt;Create the virtual directory.&amp;nbsp; In your &lt;STRONG&gt;File Manager&lt;/STRONG&gt;, right-click your Server folder (i.e. D:\Dev\WCF\Test3\Server) and click &lt;STRONG&gt;Properties&lt;/STRONG&gt;, then &lt;STRONG&gt;Web Sharing&lt;/STRONG&gt;, and click &lt;STRONG&gt;Share this folder&lt;/STRONG&gt;, then click &lt;STRONG&gt;OK&lt;/STRONG&gt;.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2. Add a Hello World Method&lt;/STRONG&gt;&lt;BR&gt;In &lt;STRONG&gt;Service.cs&lt;/STRONG&gt;, you'll add your Hello World method:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Add the HelloWorld operation contract below public interface: [ServiceContract()]&lt;BR&gt;public interface IMyService&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string MyOperation1(string myValue1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string MyOperation2(DataContract1 dataContractValue);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string HelloWorld();&lt;BR&gt;} 
&lt;LI&gt;Add your HelloWorld method below public class MyService : public class MyService : IMyService&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string MyOperation1(string myValue1) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "Hello: " + myValue1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string MyOperation2(DataContract1 dataContractValue)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "Hello: " + dataContractValue.FirstName;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string HelloWorld()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "Hello World";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Compile and debug any errors.&lt;BR&gt;&lt;STRONG&gt;Step 3.&amp;nbsp; Test your WCF service&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;In &lt;STRONG&gt;IIS Manager&lt;/STRONG&gt;, under &lt;STRONG&gt;Default Web Site&lt;/STRONG&gt;, right-click expand Server (the virtual directory you just created) 
&lt;LI&gt;Right-click &lt;STRONG&gt;Service.svc &lt;/STRONG&gt;and click &lt;STRONG&gt;Browse&lt;/STRONG&gt;.&amp;nbsp; &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;There's two issues you might hit here:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;You don't have ASP.NET installed/enabled.&amp;nbsp; To fix this, first run &lt;STRONG&gt;aspnet_regiis /i&lt;/STRONG&gt; from your .NET installation directory (&lt;STRONG&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&lt;/STRONG&gt;)&amp;nbsp; Then, allow ASP.NET in your IIS Manager.&amp;nbsp; To do so, in &lt;STRONG&gt;IIS Manager,&lt;/STRONG&gt; expand &lt;STRONG&gt;Web Service Extensions&lt;/STRONG&gt;, select &lt;STRONG&gt;ASP.NET v.2.0.50727&lt;/STRONG&gt; and click &lt;STRONG&gt;Allow&lt;/STRONG&gt;. 
&lt;LI&gt;You might see "Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service."&amp;nbsp; To fix this, first enable anonymous access.&amp;nbsp; In &lt;STRONG&gt;IIS Manager&lt;/STRONG&gt;, right click your v-dir (Server), click &lt;STRONG&gt;Properties&lt;/STRONG&gt;, click &lt;STRONG&gt;Directory Security&lt;/STRONG&gt;, click &lt;STRONG&gt;Edit&lt;/STRONG&gt; under &lt;STRONG&gt;Authentication and Access control&lt;/STRONG&gt;, click &lt;STRONG&gt;Enable Anonymous Access&lt;/STRONG&gt;, then &lt;STRONG&gt;OK&lt;/STRONG&gt; your way out of the dialogues.&amp;nbsp; Next, recycle IIS.&amp;nbsp; In a command prompt, type &lt;STRONG&gt;IISreset&lt;/STRONG&gt;.&amp;nbsp; If successful, when you browse your &lt;STRONG&gt;Service.svc&lt;/STRONG&gt; file from &lt;STRONG&gt;IIS Manager&lt;/STRONG&gt; (e.g. &lt;A href="http://localhost/service/service.svc)" mce_href="http://localhost/service/service.svc)"&gt;http://localhost/service/service.svc)&lt;/A&gt;. you'll get a message that starts with the following:&lt;BR&gt;This is a Windows© Communication Foundation service.&amp;nbsp; &lt;BR&gt;Metadata publishing for this service is currently disabled.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 4.&amp;nbsp; Enable meta-data for your WCF Service. &lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;In VSTS, right-click &lt;STRONG&gt;Web.config&lt;/STRONG&gt; and click &lt;STRONG&gt;Edit WCF Configuration&lt;/STRONG&gt;.&amp;nbsp; In &lt;STRONG&gt;WCF Configuration&lt;/STRONG&gt;, expand &lt;STRONG&gt;Advanced&lt;/STRONG&gt;, then expand &lt;STRONG&gt;Service Behaviors&lt;/STRONG&gt;, then &lt;BR&gt;right-click &lt;STRONG&gt;returnFaults&lt;/STRONG&gt; and click &lt;STRONG&gt;Add Service Behavior Element Extension&lt;/STRONG&gt;.&amp;nbsp; Select &lt;STRONG&gt;serviceMetadata&lt;/STRONG&gt; and click &lt;STRONG&gt;Add&lt;/STRONG&gt;.&amp;nbsp; 
&lt;LI&gt;In &lt;STRONG&gt;WCF configuration&lt;/STRONG&gt;, select &lt;STRONG&gt;serviceMetadata&lt;/STRONG&gt; and change &lt;STRONG&gt;HttpGetEnabled&lt;/STRONG&gt; to True.&amp;nbsp; Close the dialogue and save changes. 
&lt;LI&gt;Test your service again.&amp;nbsp; Browse to &lt;A href="http://localhost/Server/Service.svc" mce_href="http://localhost/Server/Service.svc"&gt;http://localhost/Server/Service.svc&lt;/A&gt; and this time you should see your service (e.g. MyService Service).&amp;nbsp; You &lt;BR&gt;will see a message that starts with the following:&lt;BR&gt;"You have created a service."&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 5.&amp;nbsp; Create the test client.&lt;/STRONG&gt;&lt;BR&gt;In this step, we'll create a quick console app to call the WCF service:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;In Visual Studio, click &lt;STRONG&gt;File&lt;/STRONG&gt; -&amp;gt; &lt;STRONG&gt;New&lt;/STRONG&gt; -&amp;gt; &lt;STRONG&gt;Project&lt;/STRONG&gt; 
&lt;LI&gt;Select &lt;STRONG&gt;Console Application&lt;/STRONG&gt;. 
&lt;LI&gt;Browse to a directory to store your test client:&amp;nbsp; (e.g. D:\Dev\WCF\Test1\WCFClient)&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 6.&amp;nbsp; Add a Web Services reference to your WCF Service.&lt;/STRONG&gt;&lt;BR&gt;In this step, we'll add a Web Services reference.&amp;nbsp; &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Right-click R&lt;STRONG&gt;eferences&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;LI&gt;Click &lt;STRONG&gt;Add Web Reference&lt;/STRONG&gt; ... 
&lt;LI&gt;In the &lt;STRONG&gt;Add Web Reference&lt;/STRONG&gt; dialogue, add the path to your WCF Service (&lt;A href="http://localhost/Server/Service.svc)" mce_href="http://localhost/Server/Service.svc)"&gt;http://localhost/Server/Service.svc)&lt;/A&gt; 
&lt;LI&gt;Click &lt;STRONG&gt;Add Reference&lt;/STRONG&gt; to close the dialogue.&amp;nbsp; You should then see your Web Service reference show up under &lt;STRONG&gt;Web References&lt;/STRONG&gt;.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 7.&amp;nbsp; Add the namespace to your&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Browse to your &lt;STRONG&gt;Reference.cs&lt;/STRONG&gt; file.&amp;nbsp; You'll find the file below &lt;STRONG&gt;Reference.map&lt;/STRONG&gt; under your Web service reference.&amp;nbsp; You might need to click the &lt;STRONG&gt;Show All Files&lt;/STRONG&gt; button on the &lt;STRONG&gt;Solution Explorer&lt;/STRONG&gt; so you can see the files under your Web service reference.&amp;nbsp; 
&lt;LI&gt;Find the namespace.&amp;nbsp; You'll see a line similar to the following:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; namespace ConsoleApplication1.localhost 
&lt;LI&gt;Add the using statement to your &lt;STRONG&gt;Program.cs&lt;/STRONG&gt; file.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using ConsoleApplication1.localhost;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Step 8. Call your WCF service&lt;/STRONG&gt;&lt;BR&gt;In your test client, call your WCF service:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyService service = new MyService();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string foo;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foo = service.HelloWorld();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(foo);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;When you compile and run your console application, you should see the following:&lt;BR&gt;Hello World&lt;BR&gt;Press any key to continue . . .&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Additional Resources&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://wcf.netfx3.com/" target=_blank mce_href="http://wcf.netfx3.com/"&gt;WCF Portal&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.com/WCF" target=_blank mce_href="http://msdn.com/WCF"&gt;MSDN - WCF Page&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Hopefully this step through helps you quickly see some of the bits and pieces you can play with.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5463866" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/WCF/default.aspx">WCF</category></item></channel></rss>