Solving Identity Management in Modern Applications Demystifying OAuth 2.0, OpenID Connect, and SAML 2.0 — Yvonne Wilson Abhishek Hingnikar Solving Identity Management in Modern Applications Demystifying OAuth 2.0, OpenID Connect, and SAML 2.0 Yvonne Wilson Abhishek Hingnikar Solving Identity Management in Modern Applications: Demystifying OAuth 2.0, OpenID Connect, and SAML 2.0 Yvonne Wilson Abhishek Hingnikar San Francisco, CA, USA London, UK ISBN-13 (pbk): 978-1-4842-5094-5 ISBN-13 (electronic): 978-1-4842-5095-2 https://doi.org/10.1007/978-1-4842-5095-2 Copyright © 2019 by Yvonne Wilson, Abhishek Hingnikar This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Susan McDermott Development Editor: Laura Berendson Coordinating Editor: Rita Fernando Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484250945. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper Table of Contents About the Authors ��������������������������������������������������������������������������������������������������xvii About the Technical Reviewers ������������������������������������������������������������������������������xix Acknowledgments ��������������������������������������������������������������������������������������������������xxi Introduction �����������������������������������������������������������������������������������������������������������xxv Chapter 1: The Hydra of Modern Identity ������������������������������������������������������������������1 Identity Challenges �����������������������������������������������������������������������������������������������������������������������1 Objective ���������������������������������������������������������������������������������������������������������������������������������������3 Sample Application �����������������������������������������������������������������������������������������������������������������������6 Design Questions ��������������������������������������������������������������������������������������������������������������������������6 Summary���������������������������������������������������������������������������������������������������������������������������������������7 Key Points ��������������������������������������������������������������������������������������������������������������������������������7 Note�����������������������������������������������������������������������������������������������������������������������������������������������7 Chapter 2: The Life of an Identity �����������������������������������������������������������������������������9 Terminology ����������������������������������������������������������������������������������������������������������������������������������9 Events in the Life of an Identity���������������������������������������������������������������������������������������������������11 Provisioning ���������������������������������������������������������������������������������������������������������������������������11 Authorization �������������������������������������������������������������������������������������������������������������������������12 Authentication �����������������������������������������������������������������������������������������������������������������������12 Access Policy Enforcement ���������������������������������������������������������������������������������������������������13 Sessions ��������������������������������������������������������������������������������������������������������������������������������13 Single Sign-On (SSO) �������������������������������������������������������������������������������������������������������������14 Stronger Authentication ���������������������������������������������������������������������������������������������������������14 Logout ������������������������������������������������������������������������������������������������������������������������������������15 iii Table of ConTenTs Account Management and Recovery �������������������������������������������������������������������������������������16 Deprovisioning �����������������������������������������������������������������������������������������������������������������������17 Summary�������������������������������������������������������������������������������������������������������������������������������������17 Key Points ������������������������������������������������������������������������������������������������������������������������������17 Chapter 3: Evolution of Identity ������������������������������������������������������������������������������19 Identity Management Approaches ����������������������������������������������������������������������������������������������19 Per-Application Identity Silo ��������������������������������������������������������������������������������������������������20 Centralized User Repository ��������������������������������������������������������������������������������������������������20 Early SSO Servers ������������������������������������������������������������������������������������������������������������������21 Federated Identity and SAML 2�0 ������������������������������������������������������������������������������������������22 WS-Fed ����������������������������������������������������������������������������������������������������������������������������������23 OpenID �����������������������������������������������������������������������������������������������������������������������������������24 OAuth 2�0 �������������������������������������������������������������������������������������������������������������������������������24 OpenID Connect (OIDC) ����������������������������������������������������������������������������������������������������������25 Standard Protocols ����������������������������������������������������������������������������������������������������������������������26 Summary�������������������������������������������������������������������������������������������������������������������������������������27 Key Points ������������������������������������������������������������������������������������������������������������������������������27 Notes �������������������������������������������������������������������������������������������������������������������������������������������27 Chapter 4: Identity Provisioning �����������������������������������������������������������������������������29 Provisioning Options �������������������������������������������������������������������������������������������������������������������29 Self-Registration ��������������������������������������������������������������������������������������������������������������������30 Identity Migration ������������������������������������������������������������������������������������������������������������������32 Administrative Account Creation �������������������������������������������������������������������������������������������36 Leverage Existing Identity Service ����������������������������������������������������������������������������������������38 Selecting an External Identity Service ����������������������������������������������������������������������������������������39 Self-Registered Identities ������������������������������������������������������������������������������������������������������40 Organization Identities �����������������������������������������������������������������������������������������������������������41 Government Identities �����������������������������������������������������������������������������������������������������������41 Industry Consortium Identities ����������������������������������������������������������������������������������������������42 Identity Provider Selection ����������������������������������������������������������������������������������������������������������42 iv Table of ConTenTs Choosing and Validating Identity Attributes ��������������������������������������������������������������������������������44 Suggestions ���������������������������������������������������������������������������������������������������������������������������46 Validating Critical Attributes ��������������������������������������������������������������������������������������������������47 Summary�������������������������������������������������������������������������������������������������������������������������������������48 Key Points ������������������������������������������������������������������������������������������������������������������������������48 Notes �������������������������������������������������������������������������������������������������������������������������������������������49 Chapter 5: OAuth 2�0 and API Authorization �����������������������������������������������������������51 API Authorization �������������������������������������������������������������������������������������������������������������������������51 OAuth 2�0 ������������������������������������������������������������������������������������������������������������������������������������53 Terminology ��������������������������������������������������������������������������������������������������������������������������������55 Roles ��������������������������������������������������������������������������������������������������������������������������������������55 Confidential vs� Public Clients �����������������������������������������������������������������������������������������������56 Client Profiles ������������������������������������������������������������������������������������������������������������������������56 Tokens and Authorization Code ���������������������������������������������������������������������������������������������57 How It Works �������������������������������������������������������������������������������������������������������������������������������57 Authorization Code Grant �������������������������������������������������������������������������������������������������������57 Implicit Grant �������������������������������������������������������������������������������������������������������������������������64 Resource Owner Password Credentials Grant �����������������������������������������������������������������������67 Client Credentials Grant ���������������������������������������������������������������������������������������������������������69 Calling an API �������������������������������������������������������������������������������������������������������������������������71 Refresh Token ������������������������������������������������������������������������������������������������������������������������71 Guidance ��������������������������������������������������������������������������������������������������������������������������������73 Summary�������������������������������������������������������������������������������������������������������������������������������������74 Key Points ������������������������������������������������������������������������������������������������������������������������������74 Notes �������������������������������������������������������������������������������������������������������������������������������������������75 Chapter 6: OpenID Connect �������������������������������������������������������������������������������������77 Problem to Solve �������������������������������������������������������������������������������������������������������������������������77 Terminology ��������������������������������������������������������������������������������������������������������������������������������79 Roles ��������������������������������������������������������������������������������������������������������������������������������������79 Client Types ���������������������������������������������������������������������������������������������������������������������������79 Tokens and Authorization Code ���������������������������������������������������������������������������������������������79 v Table of ConTenTs Endpoints �������������������������������������������������������������������������������������������������������������������������������80 ID Token ���������������������������������������������������������������������������������������������������������������������������������80 How It Works �������������������������������������������������������������������������������������������������������������������������������82 OIDC Flows ����������������������������������������������������������������������������������������������������������������������������83 OIDC Authorization Code Flow �����������������������������������������������������������������������������������������������83 OIDC Implicit Flow �����������������������������������������������������������������������������������������������������������������89 OIDC Hybrid Flow �������������������������������������������������������������������������������������������������������������������92 UserInfo Endpoint ������������������������������������������������������������������������������������������������������������������������94 Summary�������������������������������������������������������������������������������������������������������������������������������������95 Key Points ������������������������������������������������������������������������������������������������������������������������������96 Notes �������������������������������������������������������������������������������������������������������������������������������������������96 Chapter 7: SAML 2�0 ����������������������������������������������������������������������������������������������� 99 Problem to Solve �������������������������������������������������������������������������������������������������������������������������99 Terminology ������������������������������������������������������������������������������������������������������������������������������100 How It Works �����������������������������������������������������������������������������������������������������������������������������101 SP-Initiated SSO ������������������������������������������������������������������������������������������������������������������102 Single Sign-On ���������������������������������������������������������������������������������������������������������������������103 IdP-Initiated Flow ����������������������������������������������������������������������������������������������������������������103 Identity Federation ���������������������������������������������������������������������������������������������������������������105 Authentication Brokers �������������������������������������������������������������������������������������������������������������107 Configuration�����������������������������������������������������������������������������������������������������������������������������108 Summary�����������������������������������������������������������������������������������������������������������������������������������109 Key Points ����������������������������������������������������������������������������������������������������������������������������110 Notes �����������������������������������������������������������������������������������������������������������������������������������������111 Chapter 8: Authorization and Policy Enforcement ������������������������������������������������113 Authorization vs� Policy Enforcement����������������������������������������������������������������������������������������113 Levels of Authorization and Access Policy Enforcement �����������������������������������������������������114 User vs� Application Authorization ��������������������������������������������������������������������������������������������115 User Authorization ���������������������������������������������������������������������������������������������������������������116 Delivery �������������������������������������������������������������������������������������������������������������������������������117 Enforcement ������������������������������������������������������������������������������������������������������������������������119 vi Table of ConTenTs Application Authorization ����������������������������������������������������������������������������������������������������������119 Application Attributes ����������������������������������������������������������������������������������������������������������119 Authorization �����������������������������������������������������������������������������������������������������������������������120 Delivery �������������������������������������������������������������������������������������������������������������������������������120 Enforcement ������������������������������������������������������������������������������������������������������������������������120 Summary�����������������������������������������������������������������������������������������������������������������������������������121 Key Points ����������������������������������������������������������������������������������������������������������������������������121 Notes �����������������������������������������������������������������������������������������������������������������������������������������122 Chapter 9: Sample Application with Custom API ��������������������������������������������������123 Background �������������������������������������������������������������������������������������������������������������������������������124 Application Requirements ���������������������������������������������������������������������������������������������������125 Platform, Framework, and Identity Provider ������������������������������������������������������������������������128 API ���������������������������������������������������������������������������������������������������������������������������������������������129 Protect the API ���������������������������������������������������������������������������������������������������������������������130 API Implementation �������������������������������������������������������������������������������������������������������������132 Extensibility and Adding Custom Claims �����������������������������������������������������������������������������134 Front End �����������������������������������������������������������������������������������������������������������������������������������136 Front-End Functions ������������������������������������������������������������������������������������������������������������136 Summary�����������������������������������������������������������������������������������������������������������������������������������140 Key Points ����������������������������������������������������������������������������������������������������������������������������141 Note�������������������������������������������������������������������������������������������������������������������������������������������141 Chapter 10: Sessions ��������������������������������������������������������������������������������������������143 Application Sessions �����������������������������������������������������������������������������������������������������������������143 Identity Provider Sessions ���������������������������������������������������������������������������������������������������������145 Multiple Sessions ����������������������������������������������������������������������������������������������������������������������145 Session Duration �����������������������������������������������������������������������������������������������������������������������146 Session Renewal �����������������������������������������������������������������������������������������������������������������������148 Token Renewal ��������������������������������������������������������������������������������������������������������������������������148 vii Table of ConTenTs Reconstituted Sessions ������������������������������������������������������������������������������������������������������������150 Summary�����������������������������������������������������������������������������������������������������������������������������������150 Key Points ����������������������������������������������������������������������������������������������������������������������������150 Chapter 11: Single Sign-On ����������������������������������������������������������������������������������151 What Is SSO? ����������������������������������������������������������������������������������������������������������������������������151 How SSO Works ������������������������������������������������������������������������������������������������������������������������152 SSO Session Attributes �������������������������������������������������������������������������������������������������������������154 SSO Session Duration ����������������������������������������������������������������������������������������������������������154 Multiple Identity Providers ���������������������������������������������������������������������������������������������������155 Authentication Mechanisms ������������������������������������������������������������������������������������������������155 Login Page Branding �����������������������������������������������������������������������������������������������������������156 Summary�����������������������������������������������������������������������������������������������������������������������������������156 Key Points ����������������������������������������������������������������������������������������������������������������������������156 Note�������������������������������������������������������������������������������������������������������������������������������������������157 Chapter 12: Stronger Authentication ��������������������������������������������������������������������159 The Problem with Passwords ���������������������������������������������������������������������������������������������������159 Stronger Forms of Authentication ���������������������������������������������������������������������������������������������160 Multi-factor Authentication ��������������������������������������������������������������������������������������������������161 Step-Up Authentication �������������������������������������������������������������������������������������������������������162 Session Timeouts ����������������������������������������������������������������������������������������������������������������������163 Requesting Authentication Mechanisms �����������������������������������������������������������������������������������163 SAML 2�0 �����������������������������������������������������������������������������������������������������������������������������163 OIDC �������������������������������������������������������������������������������������������������������������������������������������164 Step-Down Authentication ��������������������������������������������������������������������������������������������������������164 Deployment �������������������������������������������������������������������������������������������������������������������������������165 Summary�����������������������������������������������������������������������������������������������������������������������������������165 Key Points ����������������������������������������������������������������������������������������������������������������������������165 Notes �����������������������������������������������������������������������������������������������������������������������������������������166 viii Table of ConTenTs Chapter 13: Logout �����������������������������������������������������������������������������������������������167 Multiple Sessions ����������������������������������������������������������������������������������������������������������������������167 Logout Triggers �������������������������������������������������������������������������������������������������������������������������169 Logout Options ��������������������������������������������������������������������������������������������������������������������������170 Application Logout ��������������������������������������������������������������������������������������������������������������������172 OAuth 2�0 ����������������������������������������������������������������������������������������������������������������������������������172 OIDC ������������������������������������������������������������������������������������������������������������������������������������������173 SAML 2�0 �����������������������������������������������������������������������������������������������������������������������������������175 Session Termination ������������������������������������������������������������������������������������������������������������������177 Logout and Multilevel Authentication ����������������������������������������������������������������������������������������177 Redirect After Logout ����������������������������������������������������������������������������������������������������������������177 Summary�����������������������������������������������������������������������������������������������������������������������������������178 Key Points ����������������������������������������������������������������������������������������������������������������������������178 Notes �����������������������������������������������������������������������������������������������������������������������������������������179 Chapter 14: Account Management �����������������������������������������������������������������������181 Identity Attributes ����������������������������������������������������������������������������������������������������������������������181 Credential Reset ������������������������������������������������������������������������������������������������������������������������183 Account Recovery ���������������������������������������������������������������������������������������������������������������������183 Password Guidance ������������������������������������������������������������������������������������������������������������������184 Helpdesk Reset �������������������������������������������������������������������������������������������������������������������������184 Summary�����������������������������������������������������������������������������������������������������������������������������������185 Key Points ����������������������������������������������������������������������������������������������������������������������������185 Notes �����������������������������������������������������������������������������������������������������������������������������������������186 Chapter 15: Deprovisioning ����������������������������������������������������������������������������������187 Account Termination �����������������������������������������������������������������������������������������������������������������187 Best Practices ���������������������������������������������������������������������������������������������������������������������������188 Just Do It! ����������������������������������������������������������������������������������������������������������������������������188 Provide a Soft Delete Technique ������������������������������������������������������������������������������������������188 Reserve Deprovisioned Identities ����������������������������������������������������������������������������������������189 ix