Synopses & Reviews
As systems have become interconnected and more complicated, programmers needed ways to identify parties across multiple computers. One way to do this was for the parties that used applications on one computer to authenticate to the applications (and/or operating systems) that ran on the other computers. This mechanism is still widely used-for example, when logging on to a great number of Web sites. However, this approach becomes unmanageable when you have many co-operating systems (as is the case, for example, in the enterprise). Therefore, specialized services were invented that would register and authenticate users, and subsequently provide claims about them to interested applications. Some well-known examples are NTLM, Kerberos, Public Key Infrastructure (PKI), and the Security Assertion Markup Language (SAML). Most enterprise applications need some basic user security features. At a minimum, they need to authenticate their users, and many also need to authorize access to certain features so that only privileged users can get to them. Some apps must go further and audit what the user does. On Windows®, these features are built into the operating system and are usually quite easy to integrate into an application. By taking advantage of Windows integrated authentication, you don't have to invent your own authentication protocol or manage a user database. By using access control lists (ACLs), impersonation, and features such as groups, you can implement authorization with very little code. Indeed, this advice applies no matter which OS you are using. It's almost always a better idea to integrate closely with the security features in your OS rather than reinventing those features yourself. But what happens when you want to extend reach to users who don't happen to have Windows accounts? What about users who aren't running Windows at all? More and more applications need this type of reach, which seems to fly in the face of traditional advice. This book gives you enough information to evaluate claims-based identity as a possible option when you're planning a new application or making changes to an existing one. It is intended for any architect, developer, or information technology (IT) professional who designs, builds, or operates Web applications and services that require identity information about their users.
About the Author
Dominick Baier splits his time between being an independent security consultant and an instructor for DevelopMentor - teaching and authoring the ASP.NET and the .NET security curriculum. He has a degree in computer science (German Diplom Ingenieur), is a certified BS7799/ISO17799 Lead Auditor and speaks at various conferences (WinDev, DevWeek, ADC) about application security. When not teaching he spends his time researching security, doing audits and penetration tests and helps other developers around the world to build more secure applications. Dominick maintains a security blog at http://www.leastprivilege.com.
Vittorio Bertocci is a Senior Architect Evangelist in the Windows Azure Platform Evangelism team with Microsoft® Corp. After four years in the Italian Microsoft Consulting Services, Vittorio moved to the U.S. headquarters in Redmond, where he has spent the past four years helping customers deploy solutions based on identity and access management, SOA, and services. He currently focuses on all things identity, working with the developer's community, large enterprises and partners. Vittorio is a published author; he frequently speaks about identity at international conferences and maintains a popular blog at http://blogs.msdn.com/vbertocci.
Keith Brown is a co-founder of Pluralsight, a premier Microsoft® .NET training provider. Keith is the author of Pluralsight's Applied .NET Security course as well as several books, including The .NET Developer's Guide to Windows® Security, which is available both in print and on the Web. Learn more at www.pluralsight.com/keith
Matias Woloski is an Enterprise Architect at Southworks S.R.L. He's been involved in software development for 6 yeasr. Currently, he's working with the patterns & practices team at Microsoft® in a Scrum-driven project. He maintains a blog at http://blogs.southworks.net/mwoloski/
Eugenio Pace is a Senior Program Manager in the patterns & practices group at Microsoft®. He is responsible for developing guidance for migrating and building application for the Windows Azure® platform and for Windows® Phone 7. Before that he worked on architecture guidance for claims based identity and identity federation. You can find his blog here: http://blogs.msdn.com/eugeniop and on twitter @eugenio_Pace.
Table of Contents
Foreword; Foreword; Preface; Who This Book Is For; Why This Book Is Pertinent Now; A Note About Terminology; How This Book Is Structured; What You Need to Use the Code; Whos Who; Acknowledgments; Chapter 1: An Introduction to Claims; 1.1 What Do Claims Provide?; 1.2 Implementing Claims-Based Identity; 1.3 A Summary of Benefits; 1.4 Moving On; Chapter 2: Claims-Based Architectures; 2.1 A Closer Look at Claims-Based Architectures; 2.2 Federating Identity Across Realms; 2.3 Design Considerations for Claims-Based Applications; Chapter 3: Claims-Based Single Sign-On for the Web; 3.1 The Premise; 3.2 Goals and Requirements; 3.3 Overview of the Solution; 3.4 Inside the Implementation; 3.5 Signing Out of an Application; 3.6 Setup and Physical Deployment; 3.7 VariationMoving to Windows Azure; 3.8 Hosting a-Expense on Windows Azure; 3.9 More Information; Chapter 4: Federated Identity for Web Applications; 4.1 The Premise; 4.2 Goals and Requirements; 4.3 Overview of the Solution; 4.4 Benefits and Limitations; 4.5 Inside the Implementation; 4.6 Setup and Physical Deployment; 4.7 Establishing Trust Relationships; 4.8 More Information; Chapter 5: Federated Identity for Web Services; 5.1 The Premise; 5.2 Goals and Requirements; 5.3 Overview of the Solution; 5.4 Inside the Implementation; 5.5 Setup and Physical Deployment; Chapter 6: Federated Identity with Multiple Partners; 6.1 The Premise; 6.2 Goals and Requirements; 6.3 Overview of the Solution; 6.4 Inside the Implementation; 6.5 Setup and Physical Deployment; Using Fedutil; Using FedUtil to Make an Application Claims-Aware; Message Sequences; The Browser-Based Scenario; The Active Client Scenario; Industry Standards; Security Assertion Markup Language (SAML); WS-Federation; WS-Federation: Passive Requestor Profile; WS-Security; WS-SecureConversation; WS-Trust; XML Encryption; Certificates; Certificates for Browser-Based Applications; Certificates for Active Clients; Glossary;