<?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 : Security</title><link>http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx</link><description>Tags: Security</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Security Mental Model for Azure</title><link>http://blogs.msdn.com/jmeier/archive/2009/09/17/security-mental-model-for-azure.aspx</link><pubDate>Thu, 17 Sep 2009 02:04:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896100</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9896100.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9896100</wfw:commentRss><description>&lt;p&gt;We’ve been exploring Azure on the patterns &amp;amp; practices team for potential security guidance.&amp;#160;&amp;#160; To get our heads around it, we’ve had to create a simple view for our team that we could quickly whiteboard or drill into.&amp;#160; We wanted a way to easily compare with our previous security guidance.&amp;#160; Here’s what we ended up with … &lt;/p&gt;  &lt;p&gt;Today’s application security mental model …&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/SecurityMentalModelforAzure_E1FB/SecurityMentalModel_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SecurityMentalModel" border="0" alt="SecurityMentalModel" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/SecurityMentalModelforAzure_E1FB/SecurityMentalModel_thumb.png" width="404" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Compare that to our evolving security mental model for Azure …&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/SecurityMentalModelforAzure_E1FB/SecurityMentalModelForAzure_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SecurityMentalModelForAzure" border="0" alt="SecurityMentalModelForAzure" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/SecurityMentalModelforAzure_E1FB/SecurityMentalModelForAzure_thumb.png" width="404" height="348" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/SecurityMentalModelforAzure_E1FB/SecurityMentalModel_2.png"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; The key thing to note is that on Azure you have a managed infrastructure, but you still have to address application security issues, as you would in today’s on-premise scenario.&amp;#160; There are obviously more details to the story, but I’ll elaborate on those another day.&amp;#160; For now, the key is to simply notice how you can carry forward your application security skills to the cloud as a new deployment channel.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9896100" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category></item><item><title>Cloud Security Frame</title><link>http://blogs.msdn.com/jmeier/archive/2009/08/20/cloud-security-frame.aspx</link><pubDate>Thu, 20 Aug 2009 03:45:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9876144</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9876144.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9876144</wfw:commentRss><description>&lt;p&gt;I posted a draft of our &lt;a href="http://shapingsoftware.com/2009/08/20/cloud-security-frame/" target="_blank"&gt;Cloud Security Frame&lt;/a&gt; at &lt;a href="http://shapingsoftware.com/" target="_blank"&gt;Shaping Software&lt;/a&gt;.&amp;#160; This frame is especially important because we’re using it to help us map out the Cloud security space for our patterns &amp;amp; practices Cloud Security Guidance project.&amp;#160; It’s helps us scope our project.&amp;#160; The frame is basically a set of Hot Spots.&amp;#160; We use the Hot Spots to find, organize, and share principles, patterns, and practices.&amp;#160; We also use the Hot Spots to find pain points and opportunity or to organize key engineering decisions.&amp;#160; Here is our current set of Hot Spots:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Auditing and Logging&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Authentication&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Authorization&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Communication&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;Cryptography&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Exception Management&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Sensitive Data&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Session Management&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Validation&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this case, since it’s a security frame, we’re using the Hot Spots to organize threats, attacks, vulnerabilities and countermeasures.&amp;#160; This helps make the information more actionable and relevant.&amp;#160; We’re sharing this early and often so that you can give feedback and help us shape it as we go.&lt;/p&gt;  &lt;p&gt;If you’re familiar with any of the following guides, this Hot Spot approach should look familiar:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/AppArchGuide" target="_blank"&gt;App Arch Guide 2.0&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;WCF Security Guide&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998530.aspx" target="_blank"&gt;Improving .NET Application Performance and Scalability&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx" target="_blank"&gt;Improving Web Application Security: Threats and Countermeasures&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Check out our evolving &lt;a href="http://shapingsoftware.com/2009/08/20/cloud-security-frame/" target="_blank"&gt;Cloud Security Frame&lt;/a&gt; and provide your feedback in the comments.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9876144" 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/Cloud/default.aspx">Cloud</category></item><item><title>Cloud Security Survey Results</title><link>http://blogs.msdn.com/jmeier/archive/2009/08/18/cloud-security-survey-results.aspx</link><pubDate>Tue, 18 Aug 2009 05:08:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9873408</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9873408.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9873408</wfw:commentRss><description>&lt;p&gt;As a follow up to our earlier &lt;a href="http://blogs.msdn.com/jmeier/archive/2009/08/04/cloud-security-survey.aspx"&gt;patterns &amp;amp; practices Cloud Security Survey&lt;/a&gt;, here is a quick summary of the results.&amp;#160; Note that the the bulk of our respondents said they spend most of their time in architect roles.&amp;#160; The next biggest buckets were developers and testers. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key Take Aways     &lt;br /&gt;&lt;/strong&gt;Here are some highlights from the survey:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;As far as cloud adoption, there is fairly even spread in adoption from evaluation to testing to engaged migrations, with a slightly heavier emphasis on testing.&lt;/li&gt;    &lt;li&gt;There is significant interest in data handling within the cloud, such as confining data to geographic regions. &lt;/li&gt;    &lt;li&gt;There is significant interest in infrastructure and process related security issues such as SLA’s, policies, and intellectual property. &lt;/li&gt;    &lt;li&gt;There is significant interest in threats and countermeasures.&lt;/li&gt;    &lt;li&gt;There is some interest in OpenID as an authentication / authorization approach.&lt;/li&gt;    &lt;li&gt;There is some interest in ingress/IP filtering.&lt;/li&gt;    &lt;li&gt;There is some interest in eDiscovery.&lt;/li&gt;    &lt;li&gt;There is some interest in HIPPA. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;App Scenarios in Rank Order     &lt;br /&gt;&lt;/strong&gt;Here are the top application scenarios in rank order based on respondents:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;A cloud-based service used by different Enterprises (federated scenario).&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;An internet facing web application, deployed on the cloud.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;An enterprise specific web application, deployed on the cloud.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;An enterprise specific web application, deployed on premises using cloud-based services.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;An enterprise specific web application, deployed on-premises using cloud-based services and cloud storage.&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Authentication in Rank Order     &lt;br /&gt;&lt;/strong&gt;Here is are the top authentication mechanisms in rank order based on respondents:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Windows Authentication&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Forms Authentication&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Cert Authentication&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Windows Live&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I think one of the most interesting things we've done as a result of the survey is we started to collect and organize relevant industry standards.&amp;#160; We'll try to find any relevant technical intersections (our focus is on technical guidance.)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9873408" 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/Cloud/default.aspx">Cloud</category></item><item><title>Security Hot Spots</title><link>http://blogs.msdn.com/jmeier/archive/2009/03/09/security-hot-spots.aspx</link><pubDate>Tue, 10 Mar 2009 00:36:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9468220</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9468220.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9468220</wfw:commentRss><description>&lt;p&gt;I wrote a post about &lt;a href="http://shapingsoftware.com/2009/03/09/security-hot-spots/" target="_blank"&gt;Security Hot Spots&lt;/a&gt; on &lt;a href="http://shapingsoftware.com/" target="_blank"&gt;Shaping Software&lt;/a&gt;.&amp;#160; Hot Spots are a way to organize and share information more effectively.&amp;#160;&amp;#160;&amp;#160; Hot Spots are also a way to turn &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle" target="_blank"&gt;Pareto's principle&lt;/a&gt; (the 80/20 rule) into action.&amp;#160; By focusing on the hot spots, you find the levers in the system that produce the greatest results.&amp;#160; You can use these levers to help find security flaws or improve security engineering.&amp;#160; Read my post to find the what, why and how of &lt;a href="http://shapingsoftware.com/2009/03/09/security-hot-spots/" target="_blank"&gt;Security Hot Spots&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9468220" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category></item><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>patterns &amp; practices Security Engineering Cheat Sheet</title><link>http://blogs.msdn.com/jmeier/archive/2008/11/20/patterns-practices-security-engineering-cheat-sheet.aspx</link><pubDate>Thu, 20 Nov 2008 22:55:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9130198</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9130198.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9130198</wfw:commentRss><description>&lt;p&gt;We posted our &lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Cheat%20Sheet%20-%20patterns%20%26%20practices%20Security%20Engineering&amp;amp;referringTitle=Home" target="_blank"&gt;patterns &amp;amp; practices Security Engineering Cheat Sheet&lt;/a&gt; to our &lt;a href="http://www.codeplex.com/AppArch"&gt;Application Architecture Knowledge Base&lt;/a&gt; on CodePlex.&amp;#160;&amp;#160; It’s a bird’s-eye view of applying our security techniques to the life cycle.&amp;#160; The techniques and approach shipped with VSTS/MSF Agile starting in 2005.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Security Engineering Overlay&lt;/strong&gt;    &lt;br /&gt;Here’s a view that overlays our key patterns &amp;amp; practices security techniques alongside common software engineering activities:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesSecurityEngineeringChea_A7AC/SecurityEngineering.png"&gt;&lt;img title="SecurityEngineering" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="379" alt="SecurityEngineering" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesSecurityEngineeringChea_A7AC/SecurityEngineering_thumb.png" width="515" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key Activities in the Life Cycle     &lt;br /&gt;&lt;/strong&gt;The core activities you should consider performing include the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Security Objectives.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Threat Modeling. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Security Design Guidelines.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Security Design Inspection. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Security Code Inspection. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Security Testing.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Security Deployment Inspection.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can read more about these techniques and how to apply them to your software architecture and your software development life cycle on our &lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Cheat%20Sheet%20-%20patterns%20%26%20practices%20Security%20Engineering&amp;amp;referringTitle=Home" target="_blank"&gt;Cheat Sheet – patterns &amp;amp; practices Security Engineering&lt;/a&gt;.&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://www.guidanceshare.com/wiki/Security_Engineering" target="_blank"&gt;Security Engineering&lt;/a&gt; (Guidance Share)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998382.aspx" target="_blank"&gt;patterns &amp;amp; practices Security Engineering Explained&lt;/a&gt; (MSDN)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms978516.aspx" target="_blank"&gt;patterns &amp;amp; practices Threat Modeling Web Applications&lt;/a&gt; (MSDN)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/20/patterns-practices-performance-engineering-cheat-sheet.aspx" target="_blank"&gt;patterns &amp;amp; practices Performance Engineering Cheat Sheet&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/06/agile-architecture-method.aspx"&gt;Agile Architecture Method&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/18/new-release-patterns-practices-app-arch-guide-2-0-beta-2.aspx"&gt;New Release: patterns &amp;amp; practices App Arch Guide 2.0 Beta 2&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/20/microsoft-presentation-data-access-workflow-and-integration-technology-cheat-sheets.aspx"&gt;Microsoft Presentation, Data Access, Workflow and Integration Technology Cheat Sheets&lt;/a&gt;&lt;/li&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9130198" 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/AppArch/default.aspx">AppArch</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Releases/default.aspx">Releases</category></item><item><title>patterns &amp; practices Security Engineering</title><link>http://blogs.msdn.com/jmeier/archive/2008/09/09/patterns-practices-security-engineering.aspx</link><pubDate>Tue, 09 Sep 2008 18:53:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8936860</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8936860.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8936860</wfw:commentRss><description>&lt;p&gt;As part of our &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/02/patterns-practices-app-arch-guide-2-0-project.aspx"&gt;patterns &amp;amp; practices App Arch Guide 2.0 project&lt;/a&gt;, we're consolidating our information on our patterns &amp;amp; practices Security Engineering.&amp;nbsp; Our security engineering approach is simply a collection of security-focused techniques that we found to be effective.&amp;nbsp; One of the keys to the effectiveness is our security frame.&amp;nbsp;&amp;nbsp; Our security frame is a collection of "hot spots" that organize principles, patterns, and practices, as well as anti-patterns.&amp;nbsp; We use the frame to perform security code and design inspections.&amp;nbsp; Here's a preview of our cheat sheet so far. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Security Overlay&lt;/strong&gt;&lt;br&gt;This is our patterns &amp;amp; practices Security Overlay: &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesSecurityEngineering_79B5/SecurityEngineering_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="SecurityEngineering" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesSecurityEngineering_79B5/SecurityEngineering_thumb.gif" width="391" height="300"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;It simply shows a common set of activities that customers already do, and then we overlay a set of security techniques.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Summary of Key Activities in the Life Cycle&lt;/strong&gt;&amp;nbsp;&lt;br&gt;Our patterns &amp;amp; practices Security Engineering approach extends these proven core activities to create security specific activities. These activities include:  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Security Objectives&lt;/strong&gt;. Setting objectives helps you scope and prioritize your work by setting boundaries and constraints. Setting security objectives helps you identify where to start, how to proceed, and when you are done. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Threat Modeling&lt;/strong&gt;. Threat modeling is an engineering technique that can help you identify threats, attacks, vulnerabilities, and countermeasures that could affect your application. You can use threat modeling to shape your application's design, meet your company's security objectives, and reduce risk. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Security Design Guidelines&lt;/strong&gt;. Creating design guidelines is a common practice at the start of an application project to guide development and share knowledge across the team. Effective design guidelines for security organize security principles, practices, and patterns by actionable categories. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Security Design Inspection&lt;/strong&gt;. Security design inspections are an effective way to identify problems in your application design. By using pattern-based categories and a question-driven approach, you simplify evaluating your design against root cause security issues. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Security Code Inspection&lt;/strong&gt;. Many security defects are found during code reviews. Analyzing code for security defects includes knowing what to look for and how to look for it. Security code inspections optimize inspecting code for common security issues. &lt;br&gt;Security Testing. Use a risk-based approach and use the output from the threat modeling activity to help establish the scope of your testing activities and define your test plans. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Security Deployment Inspection&lt;/strong&gt;. When you deploy your application during your build process or staging process, you have an opportunity to evaluate runtime characteristics of your application in the context of your infrastructure. Deployment reviews for security focus on evaluating your security design and configuration of your application, host, and network.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Security Frame&lt;/strong&gt;&lt;br&gt;Security frames define a set of patterns-based categories that can organize repeatable problems and solutions. You can use these categories to divide your application architecture for further analysis and to help identify application vulnerabilities. The categories within the frame represent the critical areas where mistakes are most often made.&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="0" width="457"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="126"&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="127"&gt;&lt;em&gt;Auditing and Logging&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;Who did what and when?&amp;nbsp; Auditing and logging refer to how your application records security-related events.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="128"&gt;&lt;em&gt;Authentication&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;Who are you?&amp;nbsp; Authentication is the process where an entity proves the identify of another entity, typically through credentials, such as a user name and password.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="129"&gt;&lt;em&gt;Authorization&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;What can you do?&amp;nbsp; Authorization is how your application provides access controls for resources and operations.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="130"&gt;&lt;em&gt;Configuration Management&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;Who does your application run as?&amp;nbsp; Which databases does it connect to?&amp;nbsp; How is your application administered?&amp;nbsp; How are these settings protected?&amp;nbsp; Configuration management refers to how your application handles these operations and issues.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="131"&gt;&lt;em&gt;Cryptography&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;How are you handling secrets (confidentiality)?&amp;nbsp; How are you tamper proofing your data or libraries (integrity)?&amp;nbsp; how are you providing seeds for random values that must be cryptographically strong?&amp;nbsp; Cryptography refers to how your application enforces confidentiality and integrity.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="131"&gt;&lt;em&gt;Exception Management&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt; &lt;p&gt;When a method call in your application fails, what does your application do?&amp;nbsp; How much do you reveal?&amp;nbsp; Do you return friendly information to end users?&amp;nbsp; Do you pass valuable exception information back to the caller?&amp;nbsp; Does your application fail gracefully?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="131"&gt;&lt;em&gt;Input and Data Validation&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;How do you know that the input your application receives is valid and safe?&amp;nbsp; Input validation refers to how your application filters, scrubs, or rejects input before additional processing.&amp;nbsp; Consider constraining input through entry points and encoding output through exit points.&amp;nbsp; Do you trust data sources such as databases and file shares?&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="131"&gt;&lt;em&gt;Sensitive data&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;How does your application handle sensitive data?&amp;nbsp; Sensitive data refers to how your application handles any data that must be protected either in memory, over the network, or in persistent stores.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="131"&gt;&lt;em&gt;Session Management&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="329"&gt;How does your application handle and protect user sessions?&amp;nbsp; A session refers to a session of related interactions between a user and your Web application.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;Architecture and Design Issues&lt;br&gt;&lt;/strong&gt;Use the diagram below to help you think about architecture and design issues in your application.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesSecurityEngineering_79B5/SecurityDesignIssues_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="SecurityDesignIssues" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesSecurityEngineering_79B5/SecurityDesignIssues_thumb.gif" width="386" height="300"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The key areas of concern for each application tier are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Browser&lt;/strong&gt;. Authenticating users on the client. Protecting sensitive data on the wire.&amp;nbsp; Preventing common attacks such as parameter manipulation and session hijacking.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Web Server&lt;/strong&gt;. Validating untrusted input. Exception handling. Authorizing your users. Securing the configuration.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Application Server&lt;/strong&gt;. Authenticating and Authorizing users. Auditing and logging. Protecting sensitive data on the wire. Securing configuration.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Database Server&lt;/strong&gt;. Protecting sensitive data in the database. Securing configuration. Locking down database users.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Design Guidelines&lt;br&gt;&lt;/strong&gt;This table represents a set of secure design guidelines for application architects. Use this as a starting point for secure design and to improve security design inspections&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="0" width="446"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;&lt;strong&gt;Guidelines&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Auditing and Logging&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Identify malicious behavior. Know what good traffic looks like. Audit and log activity through all of the application tiers. Secure access to log files. Back up and regularly analyze log files.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Authentication &lt;/em&gt;&amp;nbsp;&amp;nbsp; &lt;/td&gt; &lt;td valign="top" width="335"&gt;Partition site by anonymous, identified, and authenticated area. Use strong passwords. Support password expiration periods and account disablement. Do not store credentials (use one-way hashes with salt). Encrypt communication channels to protect authentication tokens. Pass Forms authentication cookies only over HTTPS connections.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Authorization&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Use least privileged accounts. Consider authorization granularity. Enforce separation of privileges. Restrict user access to system-level resources.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Configuration Management&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Use least privileged process and service accounts. Do not store credentials in plaintext. Use strong authentication and authorization on administration interfaces. Do not use the LSA. Secure the communication channel for remote administration. Avoid storing sensitive data in the Web space.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Cryptography&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Do not develop your own. Use tried and tested platform features. Keep unencrypted data close to the algorithm. Use the right algorithm and key size. Avoid key management (use DPAPI). Cycle your keys periodically. Store keys in a restricted location.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Exception Management&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Use structured exception handling. Do not reveal sensitive application implementation details. Do not log private data such as passwords. Consider a centralized exception management framework.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Input and Data Validation&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Do not trust input; consider centralized input validation. Do not rely on client-side validation. Be careful with canonicalization issues. Constrain, reject, and sanitize input. Validate for type, length, format, and range.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Parameter Manipulation&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Encrypt sensitive cookie state. Do not trust fields that the client can manipulate (query strings, form fields, cookies, or HTTP headers). Validate all values sent from the client.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Sensitive Data&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Avoid storing secrets. Encrypt sensitive data over the wire. Secure the communication channel. Provide strong access controls on sensitive data stores. Do not store sensitive data in persistent cookies. Do not pass sensitive data using the HTTP-GET protocol.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="109"&gt;&lt;em&gt;Session Management&lt;/em&gt;&lt;/td&gt; &lt;td valign="top" width="335"&gt;Limit the session lifetime. Secure the channel. Encrypt the contents of authentication cookies. Protect session state from unauthorized access.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;Patterns&lt;/strong&gt;&lt;br&gt;Design patterns in this context refer to generic solutions that address commonly occurring application design problems.&amp;nbsp; Some of the patterns identified below are well known design patterns. Their use in certain scenarios enables better security as a secondary goal. Some of the main patterns that help improve security are summarized below: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Brokered Authentication&lt;/strong&gt;. Use brokered authentication where the application validates the credentials presented by the client, without the need for a direct relationship between the two parties. An authentication broker that both parties trust independently issues a security token to the client. The client can then present credentials, including the security token, to the application. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Direct Authentication&lt;/strong&gt;. Use direct authentication where the application acts as an authentication service to validate credentials from the client. The credentials, which include proof-of-possession that is based on shared secrets, are verified against an identity store. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Roles-based authorization&lt;/strong&gt;. Role-based authorization is used to associate clients and groups with the permissions that they need to perform particular functions or access resources. When a user or group is added to a role, the user or group automatically inherits the various security permissions. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Resource-based authorization&lt;/strong&gt;. Resource-based authorization is performed on a resource, depending on the type of the resource and the mechanism used to perform authorization. Resource-based authorization can be based on access control lists (ACLs) or URLs. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Trusted Subsystem&lt;/strong&gt;. The application acts as a trusted subsystem to access additional resources. It uses its own credentials instead of the user's credentials to access the resource. The application must perform appropriate authentication and authorization of all requests that enter the subsystem. Remote resources should also be able to verify that the midstream caller is a trusted subsystem and not an upstream user of the application that is trying to bypass access to the trusted subsystem. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Impersonation and Delegation&lt;/strong&gt;. The application uses original user’s credentials to access the resource. The application must perform appropriate authentication and authorization of all requests that enter the subsystem and then impersonation or delegation while accessing resources. Remote resources should also be able to verify that individual users are trusted to access the resource. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Transfer Security&lt;/strong&gt;. Sensitive data passed between layers or remote tiers should be encrypted and signed to ensure confidentiality and integrity of the data. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Exception Shielding&lt;/strong&gt;. Sanitize unsafe exceptions by replacing them with exceptions that are safe by design. Return only those exceptions to the client that have been sanitized or exceptions that are safe by design. Exceptions that are safe by design do not contain sensitive information in the exception message, and they do not contain a detailed stack trace, either of which might reveal sensitive information about the application’s inner workings.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Additional Resources&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms998382.aspx"&gt;Security Engineering Explained&lt;/a&gt; (MSDN)&lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.guidanceshare.com/wiki/Security_Engineering"&gt;Security Engineering&lt;/a&gt; (GuidanceShare)&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/09/02/patterns-practices-app-arch-guide-2-0-project.aspx"&gt;patterns &amp;amp; practices App Arch Guide 2.0 Project&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/03/app-arch-meta-frame.aspx"&gt;App Arch Meta-Frame&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/06/layers-and-tiers.aspx"&gt;Layers and Tiers&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/07/layers-and-components.aspx"&gt;Layers and Components&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/07/services-layer.aspx"&gt;Services Layer&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/04/scenario-frames-for-presentation-business-data-and-services.aspx"&gt;Scenario Frames for Presentation, Business, Data and Services&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/08/the-architecture-journal.aspx"&gt;The Architecture Journal&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8936860" 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/AppArch/default.aspx">AppArch</category></item><item><title>Designing an Authentication and Authorization Strategy</title><link>http://blogs.msdn.com/jmeier/archive/2008/06/25/designing-an-authentication-and-authorization-strategy.aspx</link><pubDate>Wed, 25 Jun 2008 21:35:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8652728</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8652728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8652728</wfw:commentRss><description>&lt;p&gt;What are the key steps to designing an effective authentication and authorization strategy?&amp;nbsp; The keys are knowing your user stores, role stores, and who need to access what or perform which operations.&amp;nbsp;&amp;nbsp; In this post, I share the approaches we've used in two of our patterns &amp;amp; practices guides.&amp;nbsp; These are the approaches we've used to help customers design successfully design their authentication and authorization approaches. &lt;p&gt;&lt;strong&gt;Designing an Authentication and Authorization Strategy - v1&lt;/strong&gt;&lt;br&gt;When we first wrote &lt;a href="http://msdn.microsoft.com/en-us/library/aa302415.aspx" target="_blank"&gt;Building Secure ASP.NET Applications&lt;/a&gt;, here's the meta-process we came up with for working through your authentication and authorization strategies:  &lt;ol&gt; &lt;li&gt;Identify resources &lt;/li&gt; &lt;li&gt;Choose an authorization strategy &lt;/li&gt; &lt;li&gt;Choose the identities used for resource access &lt;/li&gt; &lt;li&gt;Consider identity flow &lt;/li&gt; &lt;li&gt;Choose an authentication approach &lt;/li&gt; &lt;li&gt;Decide how to flow identity &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;For elaboration, see &lt;a href="http://msdn.microsoft.com/en-us/library/aa302383.aspx" target="_blank"&gt;Authentication and Authorization&lt;/a&gt;.  &lt;p&gt;&lt;strong&gt;Designing an Authentication and Authorization Strategy - v2&lt;/strong&gt; &lt;br&gt;When we recently wrote &lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;Improving Web Application Security&lt;/a&gt;, we made some revisions:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Identify your user stores. &lt;/li&gt; &lt;li&gt;Identify your role stores.&lt;/li&gt; &lt;li&gt;Identify resources you need to access and operations you need to perform.&lt;/li&gt; &lt;li&gt;Identify which identities need to access the resources and perform the operations.&lt;/li&gt; &lt;li&gt;Choose your authentication and authorization strategies. &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Personally, I've found it really cuts to the chase if you start with your user stores and role stores, since they tend to be somewhat fixed.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Identities&lt;/strong&gt;&lt;br&gt;When you think through the identities, I've found it helpful to think in terms of who needs to access which resources or perform which actions.&amp;nbsp; Consider the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Original caller&lt;/li&gt; &lt;li&gt;Process identity&lt;/li&gt; &lt;li&gt;Service account&lt;/li&gt; &lt;li&gt;Custom identity&lt;/li&gt; &lt;li&gt;Role &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Resource Types&lt;br&gt;&lt;/strong&gt;When you think through the resource types, I find it helpful to think in terms of:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;System&lt;/li&gt; &lt;li&gt;Application&lt;/li&gt; &lt;li&gt;User &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authorization Strategies&lt;/strong&gt;&lt;br&gt;When thinking through the authorization strategies, I find it helpful to consider:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Role-based&lt;/li&gt; &lt;li&gt;Resource-based&lt;/li&gt; &lt;li&gt;Operation-based &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Resource Access Patterns&lt;/strong&gt;&lt;br&gt;When thinking through the resource access patterns, I find it helpful to consider:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Trusted subsystem model &lt;/li&gt; &lt;li&gt;Impersonation/delegation model &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Designing authentication and authorization can be a gnarly topic.&amp;nbsp; I hope the scaffolding above helps you find a path that works for you. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8652728" 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/Design/default.aspx">Design</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>Web Services Security Frame</title><link>http://blogs.msdn.com/jmeier/archive/2008/06/04/web-services-security-frame.aspx</link><pubDate>Wed, 04 Jun 2008 21:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8573758</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8573758.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8573758</wfw:commentRss><description>&lt;P&gt;The key to making principles, patterns, and practices more effective is to have an organizing frame.&amp;nbsp; While working on 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 created the Web Services Security Frame for just such a purpose.&amp;nbsp; We use the frame throughout the guidance to organize threats, attacks, vulnerabilities and countermeasures, as well as to organize principles, patterns, and practices.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Services Security Frame&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Here's a snapshot of the frame (the power of the frame is that it's a durable, evolvable backdrop -- in other words, you can shape it to your own purposes.)&amp;nbsp; You'll see this frame used throughout our upcoming guide.&lt;STRONG&gt;&amp;nbsp; &lt;/STRONG&gt;Notice that the categories serve as a pivot that we can hang other viewpoints (threats/attacks, vulnerabilities, countermeasures.)&lt;/P&gt;
&lt;TABLE class="" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class=""&gt;Category&lt;/TH&gt;
&lt;TH class=""&gt;Description&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Auditing and Logging&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Auditing and logging refers to how security-related events are recorded, monitored, and audited.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authentication&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Authentication is the process where an entity proves the identity of another entity, typically through credentials, such as a user name and password.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authorization&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Authorization is how your service provides access controls for resources and operations.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Configuration Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Configuration management refers to how your service handles database connections, administration and other configuration settings.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Exception Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Exception management refers to how you handle exceptions within your application, including fault contracts.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Impersonation/Delegation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Impersonation and delegation refers to how your service impersonates users and passes identity information downstream for authorization purposes.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Encryption&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Message encryption refers to protecting a message by converting the contents to cipher-text using cryptographic methods.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Replay Detection&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Message replay detection refers to identifying and rejecting messages that are re-submitted.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Signing&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Message signing refers to signing a message with a digital signature using cryptographic methods, to confirm the source of the message and detect if the contents have been tampered with (i.e. authentication and integrity of the message.)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Validation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Message validation refers to how you verify the message payload against schema, as well as message size, content and character sets. This includes how your service filters, scrubs and rejects input and output before additional processing. Input and output includes input from clients consuming the service as well as file-system input, as well as input from network resources, such as databases. Output typically includes the return values from your service or disk / database writes among others.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Sensitive Data&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Sensitive data includes data integrity and confidentiality of your user and application data that you need to protect. This includes how you protect sensitive data from being stolen from memory, from configuration files or when transmitted over the network.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Session Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;A session refers to a series of related interactions between a client and your service.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Threats / Attacks Organized By the Web Services Security Frame&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class="" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class=""&gt;Category&lt;/TH&gt;
&lt;TH class=""&gt;Threats / Attacks&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Auditing and Logging&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Repudiation 
&lt;LI&gt;Denial of services 
&lt;LI&gt;Disclosure of confidential information &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authentication&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Network eavesdropping 
&lt;LI&gt;Brute force attacks 
&lt;LI&gt;Dictionary attacks 
&lt;LI&gt;Cookie replay attack 
&lt;LI&gt;Credential theft &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authorization&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Elevation of privilege 
&lt;LI&gt;Disclosure of confidential data 
&lt;LI&gt;Data tampering 
&lt;LI&gt;Luring attacks 
&lt;LI&gt;Token stealing &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Configuration Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Unauthorized access to configuration stores 
&lt;LI&gt;Retrieval of clear text configuration secrets &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Exception Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Information disclosure 
&lt;LI&gt;Denial of service 
&lt;LI&gt;Elevation of privilege &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Impersonation/Delegation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Elevation of privilege 
&lt;LI&gt;Disclosure of confidential information &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Encryption&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Stealing sensitive data. 
&lt;LI&gt;Theft of encryption keys. 
&lt;LI&gt;Man in the middle attack. &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Replay Detection&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Session replay &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Singing&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Data tampering. &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Validation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;XPath injection 
&lt;LI&gt;XML Bombs 
&lt;LI&gt;Canonicalization issues 
&lt;LI&gt;Cross-site scripting 
&lt;LI&gt;SQL injection &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Sensitive Data&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Memory dumping 
&lt;LI&gt;Network eavesdropping 
&lt;LI&gt;Configuration file sniffing &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Session Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Session hijacking 
&lt;LI&gt;Session replay 
&lt;LI&gt;Man in the middle attack 
&lt;LI&gt;Inability to logout successfully 
&lt;LI&gt;Cross-site request forgery 
&lt;LI&gt;Session fixation 
&lt;LI&gt;Load balancing and session affinity &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Vulnerabilities Organized by the Web Services Security Frame&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class="" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class=""&gt;Category&lt;/TH&gt;
&lt;TH class=""&gt;Vulnerabilities&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Auditing and Logging&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Failing to audit failed logons 
&lt;LI&gt;Failing to secure log files 
&lt;LI&gt;Storing sensitive information in log files Failing to audit across application tiers Failure to throttle log files &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authentication&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Using weak passwords 
&lt;LI&gt;Storing clear text credentials in configuration files 
&lt;LI&gt;Passing clear text credentials over the network 
&lt;LI&gt;Permitting prolonged session lifetime 
&lt;LI&gt;Mixing personalization with authentication 
&lt;LI&gt;Using weak authentication mechanisms (For example, using basic authentication over an untrusted network.) &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authorization&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Relying on a single gatekeeper (e.g. relying on client-side validation only) 
&lt;LI&gt;Failing to lock down system resources against application identities 
&lt;LI&gt;Failing to limit database access to specified stored procedures 
&lt;LI&gt;Using inadequate separation of privileges 
&lt;LI&gt;Permitting over-privileged accounts &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Configuration Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Using insecure custom administration interfaces 
&lt;LI&gt;Failing to secure configuration files on the server 
&lt;LI&gt;Storing sensitive information in the clear text 
&lt;LI&gt;Having too many administrators Using over-privileged process accounts and service accounts &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Exception Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Failing to use structured exception handling (try/catch) 
&lt;LI&gt;Revealing too much information to the client 
&lt;LI&gt;Failure to specify fault contracts with the client 
&lt;LI&gt;Failure to use a global exception handler &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Impersonation / Delegation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Failure to revert to a lower privilege after using impersonation 
&lt;LI&gt;Improper use of global impersonation across the entire service &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Encryption&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Failure to encrypt messages 
&lt;LI&gt;Using custom cryptography 
&lt;LI&gt;Distributing keys insecurely Managing or storing keys insecurely &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Replay Detection&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Failure to implement message replay detection feature &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Signing&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Unsigned messages that don't confirm the source 
&lt;LI&gt;Unsigned messages that don't detect tampering &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Validation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Using non-validated input used to generate SQL queries 
&lt;LI&gt;Relying only on client-side validation Using input file names, URLs, or user names for security decisions 
&lt;LI&gt;Using application-only filters for malicious input Looking for known bad patterns of input 
&lt;LI&gt;Trusting data read from databases, file shares, and other network resources 
&lt;LI&gt;Failing to validate input from all sources including cookies, SOAP headers, SOAP parameters, databases, and network resources &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Session Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Passing session identifiers over unencrypted channels 
&lt;LI&gt;Permitting prolonged session lifetime Having insecure session state stores 
&lt;LI&gt;Placing session identifiers in query strings &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Countermeasures Organized by the Web Services Security Frame&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class="" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class=""&gt;Category&lt;/TH&gt;
&lt;TH class=""&gt;Countermeasures&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Auditing and Logging&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Identify malicious behavior. 
&lt;LI&gt;Know your baseline (know what good traffic looks like) 
&lt;LI&gt;Use application instrumentation to expose behavior that can be monitored 
&lt;LI&gt;Throttle logging 
&lt;LI&gt;Strip sensitive data before logging &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authentication&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Use strong password policies 
&lt;LI&gt;Do not store credentials in an insecure manner 
&lt;LI&gt;Use authentication mechanisms that do not require clear text credentials to be passed over the network 
&lt;LI&gt;Encrypt communication channels to secure authentication tokens 
&lt;LI&gt;Use HTTPS only with forms authentication cookies 
&lt;LI&gt;Separate anonymous from authenticated pages 
&lt;LI&gt;Using cryptographic random number generators to generate session IDs &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Authorization&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Use least privilege accounts. 
&lt;LI&gt;Authentication tied to authorization on the same tier 
&lt;LI&gt;Consider granularity of access 
&lt;LI&gt;Enforce separation of privileges 
&lt;LI&gt;Use multiple gatekeepers 
&lt;LI&gt;Secure system resources against system identities &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Configuration Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Use ACLs. 
&lt;LI&gt;Encrypt sensitive sections of configuration files 
&lt;LI&gt;Use secure settings for various operations of web services using configuration files &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Exception Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Use structured exception handling (by using try/catch blocks) 
&lt;LI&gt;Catch and wrap exceptions only if the operation adds value/information 
&lt;LI&gt;Do not reveal sensitive system or application information 
&lt;LI&gt;Implement a global exception handler 
&lt;LI&gt;Do not log private data such as passwords &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Impersonation / Delegation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Use Using statement to automatically revert impersonation 
&lt;LI&gt;Granularly impersonate only those operations that need it &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Encryption&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Use message security or transport security to encrypt your messages 
&lt;LI&gt;Use platform-provided cryptography 
&lt;LI&gt;Use platform features for key management 
&lt;LI&gt;Periodically change your keys &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Replay Detection&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Cache an identifier for incoming messages, and use message replay detection to identify and reject messages that match an entry in the replay detection cache &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Signing&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;verify messages have not been tampered with in transit (data integrity) 
&lt;LI&gt;verify messages originate from the expected sender (authenticity) &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Message Validation&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;verify the message payload against schema 
&lt;LI&gt;verify the message message size, content and character sets 
&lt;LI&gt;filter, scrub and reject input and output before additional processing &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Sensitive Data&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Do not store secrets in software 
&lt;LI&gt;Encrypt sensitive data over the network 
&lt;LI&gt;Secure the channel 
&lt;LI&gt;Encrypt sensitive data in configuration files &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;EM&gt;Session Management&lt;/EM&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;LI&gt;Partition site by anonymous, identified, and authenticated users 
&lt;LI&gt;Reduce session timeouts 
&lt;LI&gt;Avoid storing sensitive data in session stores 
&lt;LI&gt;Secure the channel to the session store 
&lt;LI&gt;Authenticate and authorize access to the session store &lt;/LI&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;Thanks&lt;BR&gt;&lt;/STRONG&gt;Special thanks to Rudy Araujo and &lt;A href="http://blogs.msdn.com/ace_team/" target=_blank mce_href="http://blogs.msdn.com/ace_team/"&gt;ACE Team&lt;/A&gt; members, Richard Lewis and John Steer for their contribution toward helping shape a better frame.&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/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;A href="http://blogs.msdn.com/jmeier/archive/2008/05/23/wcf-security-resources.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2008/05/23/wcf-security-resources.aspx"&gt;WCF Security Resources&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8573758" 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/Frames/default.aspx">Frames</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></channel></rss>