Securing the Perimeter Deploying Identity and Access Management with Free Open Source Software — Michael Schwartz Maciej Machulak Securing the Perimeter Deploying Identity and Access Management with Free Open Source Software Michael Schwartz Maciej Machulak Securing the Perimeter: Deploying Identity and Access Management with Free Open Source Software Michael Schwartz Maciej Machulak Austin, TX, USA London, UK ISBN-13 (pbk): 978-1-4842-2600-1 ISBN-13 (electronic): 978-1-4842-2601-8 https://doi.org/10.1007/978-1-4842-2601-8 Library of Congress Control Number: 2018966332 Copyright © 2018 by Michael Schwartz, Maciej Machulak 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/9781484226001. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper As Adam Savage from Mythbusters says: “Failure is always an option!” That’s why this book is dedicated to the vibrant, tenacious, and global identity community who has been at it for 20 plus years and shows no signs of slowing down. Table of Contents About the Authors ��������������������������������������������������������������������������������������������������xiii Acknowledgments ���������������������������������������������������������������������������������������������������xv Chapter 1: Introduction���������������������������������������������������������������������������������������������1 Components of an Identity Service �����������������������������������������������������������������������������������������������1 Identity Management ���������������������������������������������������������������������������������������������������������������2 Identity and Access Management �������������������������������������������������������������������������������������������3 Identity and Access Governance ���������������������������������������������������������������������������������������������������6 Directory Services �������������������������������������������������������������������������������������������������������������������8 Is IAM a Good Place to Start? ��������������������������������������������������������������������������������������������������������8 Identity Standards �������������������������������������������������������������������������������������������������������������������������9 Gluu Server ���������������������������������������������������������������������������������������������������������������������������������10 Why Free Open Source? ��������������������������������������������������������������������������������������������������������������11 Where to Start? ���������������������������������������������������������������������������������������������������������������������������13 Conclusion ����������������������������������������������������������������������������������������������������������������������������������16 Chapter 2: LDAP ������������������������������������������������������������������������������������������������������17 History �����������������������������������������������������������������������������������������������������������������������������������������17 Why Use LDAP Today? �����������������������������������������������������������������������������������������������������������������19 Basics �����������������������������������������������������������������������������������������������������������������������������������������20 Entries, DNs, and RDNs����������������������������������������������������������������������������������������������������������21 Namespace ����������������������������������������������������������������������������������������������������������������������������22 Schema����������������������������������������������������������������������������������������������������������������������������������23 Filters ������������������������������������������������������������������������������������������������������������������������������������24 LDIF ���������������������������������������������������������������������������������������������������������������������������������������������26 v Table of ConTenTs LDAP Configuration ���������������������������������������������������������������������������������������������������������������������27 Indexing ���������������������������������������������������������������������������������������������������������������������������������27 LDAP Security ������������������������������������������������������������������������������������������������������������������������29 Managing Data ����������������������������������������������������������������������������������������������������������������������������32 Command-Line Tools �������������������������������������������������������������������������������������������������������������32 GUI Tools ��������������������������������������������������������������������������������������������������������������������������������36 SDKs ��������������������������������������������������������������������������������������������������������������������������������������42 Operational Considerations ���������������������������������������������������������������������������������������������������������42 Replication �����������������������������������������������������������������������������������������������������������������������������43 Benchmark ����������������������������������������������������������������������������������������������������������������������������43 Backup/Restore ���������������������������������������������������������������������������������������������������������������������45 Monitoring �����������������������������������������������������������������������������������������������������������������������������45 Synchronization ��������������������������������������������������������������������������������������������������������������������������46 Sets and Hashing ������������������������������������������������������������������������������������������������������������������������47 Manually Synchronizing Data������������������������������������������������������������������������������������������������������50 Gluu Server Cache Refresh ���������������������������������������������������������������������������������������������������������54 LSC—LDAP Synchronization Connector �������������������������������������������������������������������������������������55 LDAP Proxy ����������������������������������������������������������������������������������������������������������������������������������55 Conclusion ����������������������������������������������������������������������������������������������������������������������������������57 Chapter 3: SAML �����������������������������������������������������������������������������������������������������59 Assertions, Bindings, Protocols, and Profiles ������������������������������������������������������������������������������60 Assertions ������������������������������������������������������������������������������������������������������������������������������61 Protocols ��������������������������������������������������������������������������������������������������������������������������������63 Protocol Bindings ������������������������������������������������������������������������������������������������������������������66 Profiles ����������������������������������������������������������������������������������������������������������������������������������70 SAML Metadata ���������������������������������������������������������������������������������������������������������������������75 Open Source SAML Software ������������������������������������������������������������������������������������������������������77 Gluu Server Shibboleth Identity Provider Overview ���������������������������������������������������������������77 Shibboleth Service Provider Example ������������������������������������������������������������������������������������78 vi Table of ConTenTs simpleSAMLphp Service Provider Example ��������������������������������������������������������������������������������89 Python-SAML ������������������������������������������������������������������������������������������������������������������������������91 Inbound SAML �����������������������������������������������������������������������������������������������������������������������97 Conclusion ��������������������������������������������������������������������������������������������������������������������������������103 Chapter 4: OAuth���������������������������������������������������������������������������������������������������105 Scopes ��������������������������������������������������������������������������������������������������������������������������������������106 OAuth Roles �������������������������������������������������������������������������������������������������������������������������������108 Authorization Server ������������������������������������������������������������������������������������������������������������108 Resource Server ������������������������������������������������������������������������������������������������������������������111 Client �����������������������������������������������������������������������������������������������������������������������������������111 Tokens ���������������������������������������������������������������������������������������������������������������������������������������112 Bearer Tokens ����������������������������������������������������������������������������������������������������������������������113 JSON Web Token (JWT) ��������������������������������������������������������������������������������������������������������114 Registration �������������������������������������������������������������������������������������������������������������������������116 Grants ����������������������������������������������������������������������������������������������������������������������������������������119 Authorization Code Grant �����������������������������������������������������������������������������������������������������120 Implicit Grant �����������������������������������������������������������������������������������������������������������������������122 Resource Owner Password Credential Grant �����������������������������������������������������������������������124 Client Credential Grant ��������������������������������������������������������������������������������������������������������124 Token Introspection �������������������������������������������������������������������������������������������������������������125 OAuth Client Example: Calling a Google API ������������������������������������������������������������������������������126 Obtaining Client Credentials ������������������������������������������������������������������������������������������������127 Calling the Google API����������������������������������������������������������������������������������������������������������131 Client Credential Grant Example with the Gluu Server ��������������������������������������������������������������135 Configuring the Gluu Server ������������������������������������������������������������������������������������������������135 OAuth Glossary and IANA Registry Terms ���������������������������������������������������������������������������������139 Conclusion ��������������������������������������������������������������������������������������������������������������������������������148 References ��������������������������������������������������������������������������������������������������������������������������������148 vii Table of ConTenTs Chapter 5: OpenID Connect �����������������������������������������������������������������������������������151 OpenID Connect Overview���������������������������������������������������������������������������������������������������������153 OpenID Connect Authorization Server Endpoints �����������������������������������������������������������������155 id_token�������������������������������������������������������������������������������������������������������������������������������157 OpenID Authentication on the Fly ����������������������������������������������������������������������������������������158 OpenID Connect Discovery ��������������������������������������������������������������������������������������������������160 Client Registration ���������������������������������������������������������������������������������������������������������������163 Authentication/Authorization �����������������������������������������������������������������������������������������������165 Response Types �������������������������������������������������������������������������������������������������������������������166 Scopes ���������������������������������������������������������������������������������������������������������������������������������167 Authorization Code Flow ������������������������������������������������������������������������������������������������������167 Implicit Flow ������������������������������������������������������������������������������������������������������������������������172 Hybrid Flow �������������������������������������������������������������������������������������������������������������������������174 Request Object ��������������������������������������������������������������������������������������������������������������������176 Userinfo Endpoint ����������������������������������������������������������������������������������������������������������������177 Logout ����������������������������������������������������������������������������������������������������������������������������������179 Pairwise Identifiers ��������������������������������������������������������������������������������������������������������������180 ACR/AMR Parameters ����������������������������������������������������������������������������������������������������������181 The Gluu Server OpenID Connect Provider ��������������������������������������������������������������������������������182 Developing OpenID Connect Client Code�����������������������������������������������������������������������������������184 Easy JavaScript Client ���������������������������������������������������������������������������������������������������������184 Apache httpd Module ����������������������������������������������������������������������������������������������������������186 oxAuth RP ����������������������������������������������������������������������������������������������������������������������������192 AppAuth Mobile Applications �����������������������������������������������������������������������������������������������193 oxd Client Middleware Service ��������������������������������������������������������������������������������������������195 OpenID Connect Glossary and IANA Registry Terms �����������������������������������������������������������������197 Conclusion ��������������������������������������������������������������������������������������������������������������������������������202 References ��������������������������������������������������������������������������������������������������������������������������������202 viii Table of ConTenTs Chapter 6: Proxy ���������������������������������������������������������������������������������������������������205 Load Balancing �������������������������������������������������������������������������������������������������������������������������207 Access Control and Security �����������������������������������������������������������������������������������������������������208 Rate Limiting �����������������������������������������������������������������������������������������������������������������������������208 Caching and Compression ��������������������������������������������������������������������������������������������������������209 Telemetry ����������������������������������������������������������������������������������������������������������������������������������210 Monetization �����������������������������������������������������������������������������������������������������������������������������210 API vs Web Proxy �����������������������������������������������������������������������������������������������������������������������211 Open Source Web Proxies ���������������������������������������������������������������������������������������������������������212 Apache httpd �����������������������������������������������������������������������������������������������������������������������212 mod_auth_openidc��������������������������������������������������������������������������������������������������������������214 Nginx �����������������������������������������������������������������������������������������������������������������������������������215 Kong ������������������������������������������������������������������������������������������������������������������������������������222 Istio ��������������������������������������������������������������������������������������������������������������������������������������228 Conclusion ��������������������������������������������������������������������������������������������������������������������������������229 Chapter 7: Strong Authentication �������������������������������������������������������������������������231 One-Time Passwords (OTPs) �����������������������������������������������������������������������������������������������������233 HOTP and TOTP ��������������������������������������������������������������������������������������������������������������������������235 HOTP ������������������������������������������������������������������������������������������������������������������������������������235 TOTP ������������������������������������������������������������������������������������������������������������������������������������237 Mutual SSL/TLS �������������������������������������������������������������������������������������������������������������������������241 Fast Identity Online (FIDO)���������������������������������������������������������������������������������������������������������246 FIDO Universal Authentication Framework (UAF)�����������������������������������������������������������������249 FIDO Universal Second Factor (U2F) ������������������������������������������������������������������������������������252 W3C Web Authentication and CTAP �������������������������������������������������������������������������������������������253 Setting Up 2FA with the Gluu Server �����������������������������������������������������������������������������������������256 FIDO Support in the Gluu Server ������������������������������������������������������������������������������������������262 ix Table of ConTenTs Other Ways to Strengthens Authentication with the Gluu Server ����������������������������������������������263 Conclusion ��������������������������������������������������������������������������������������������������������������������������������263 References ��������������������������������������������������������������������������������������������������������������������������������264 Chapter 8: User-Managed Access �������������������������������������������������������������������������267 UMA Grant ���������������������������������������������������������������������������������������������������������������������������������273 UMA RPT Requests with Interactive Claims Gathering ��������������������������������������������������������273 UMA RPT Requests with a Pushed Claim Token ������������������������������������������������������������������276 RPT Request Options �����������������������������������������������������������������������������������������������������������277 Client Credentials ����������������������������������������������������������������������������������������������������������������277 UMA Federated Authorization ���������������������������������������������������������������������������������������������������278 Protection API ����������������������������������������������������������������������������������������������������������������������280 Resource Registration ���������������������������������������������������������������������������������������������������������280 Permission Endpoint ������������������������������������������������������������������������������������������������������������281 Token Introspection �������������������������������������������������������������������������������������������������������������284 UMA Authorization Server Software ������������������������������������������������������������������������������������������285 Managing Scopes ����������������������������������������������������������������������������������������������������������������285 Managing Authorization Policies �����������������������������������������������������������������������������������������287 Interactive Claims Gathering Workflows ������������������������������������������������������������������������������289 UMA Resource Server Software ������������������������������������������������������������������������������������������������290 Gluu Gateway as UMA Resource Server ������������������������������������������������������������������������������290 UMA Client Software �����������������������������������������������������������������������������������������������������������������293 Conclusion ��������������������������������������������������������������������������������������������������������������������������������299 Chapter 9: Identity Management ��������������������������������������������������������������������������301 MidPoint ������������������������������������������������������������������������������������������������������������������������������������302 Identity Provisioning and Synchronization ��������������������������������������������������������������������������303 Role Management ���������������������������������������������������������������������������������������������������������������304 Organizational Structure ������������������������������������������������������������������������������������������������������304 Approval Processes �������������������������������������������������������������������������������������������������������������305 Midpoint Delegated Application Security Model ������������������������������������������������������������������306 Auditing �������������������������������������������������������������������������������������������������������������������������������306 x
Description: