{"id":2895,"date":"2019-06-26T14:46:16","date_gmt":"2019-06-26T14:46:16","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=2895"},"modified":"2019-06-26T14:46:16","modified_gmt":"2019-06-26T14:46:16","slug":"ionic-auth-connect-single-sign-on-made-easy","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy","title":{"rendered":"Ionic Auth Connect: Single Sign-On Made Easy"},"content":{"rendered":"<p>This week, we\u2019re excited to introduce <a href=\"https:\/\/ionicframework.com\/integrations\/auth-connect\">Ionic Auth Connect<\/a>, a new security solution that makes it easy to add single sign-on and secure user authentication to any of your Ionic apps.<\/p>\n<p>Auth Connect provides a simplified interface for developers attempting to implement authentication flows using common authentication services such as Microsoft Active Directory, AWS Cognito, Auth0, or any auth provider that uses the OpenID Connect protocol.<\/p>\n<p>Before I get into the details of why we built Auth Connect and which problems it solves, it&#8217;s helpful to start with a quick primer on how authentication flows work \u2014 and the common pitfalls that you&#8217;re likely to encounter if implementing auth on your own. Anyone who has recently attempted to add an auth workflow to a mobile app will appreciate how complicated it can be.<\/p>\n<p><!--more--><\/p>\n<h2>Standard Auth Workflow<\/h2>\n<p>The standard workflow for authenticating against these systems involves a complex handshake between the application and the backend server, typically implemented using a web browser. After the user logs in, the server hands back an <em>access token<\/em> as well as a <em>refresh token<\/em> that can be used to authenticate against the rest of the application backend.<\/p>\n<p>A typical flow looks something like the diagram below:<\/p>\n<p><a href=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1396\" height=\"597\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow.png\" alt=\"Authentication Workflow\" class=\"aligncenter size-full wp-image-2897 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow.png 1396w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow-300x128.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow-768x328.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow-1024x438.png 1024w\" data-sizes=\"auto, (max-width: 1396px) 100vw, 1396px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1396px; --smush-placeholder-aspect-ratio: 1396\/597;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1396\" height=\"597\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow.png\" alt=\"Authentication Workflow\" class=\"aligncenter size-full wp-image-2897\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow.png 1396w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow-300x128.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow-768x328.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-flow-1024x438.png 1024w\" sizes=\"auto, (max-width: 1396px) 100vw, 1396px\" \/><\/noscript><\/a><\/p>\n<p>Let\u2019s take a closer look at the second step of the flow diagram, the authentication \u201chandshake\u201d that takes place between the client application and the server. There are some common security pitfalls that developers fall into when implementing these flows manually or when using a combination of open source plugins.<\/p>\n<h2>Pitfall #1 &#8211; Embedded Browsers<\/h2>\n<p>The most common sign-in mechanism that developers use is an embedded browser, such as the InAppBrowser plugin, to achieve this flow. The issue with this approach is that these embedded browsers allow apps to inject arbitrary JavaScript into any webpage, including login screens. This allows a malicious app to be able to read the input fields from the page and grab sensitive user data like email and password.<\/p>\n<p>Often referred to as a <em>Man In The Middle<\/em> (MITM)-style attack, the malicious app poses as your application, directing the user to your legitimate login page via an embedded browser, but with malicious code installed in an attempt to steal their credentials.<\/p>\n<p>While you\u2019re likely thinking, <em>\u201cI would never do that in my apps!\u201d<\/em>, authentication service providers like Google have to take action to protect their users. In 2017, Google began blocking OAuth logins from embedded WebViews and other vendors are likely to follow suit. That means that while you may be able to implement your authorization flow today using an open source plugin like InAppBrowser or similar, there is no guarantee that it\u2019ll work tomorrow.<\/p>\n<p><a href=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab.png\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"644\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab.png\" alt=\"Google InAppBrowser Error\" class=\"aligncenter size-full wp-image-2896 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab.png 364w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab-170x300.png 170w\" data-sizes=\"auto, (max-width: 364px) 100vw, 364px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 364px; --smush-placeholder-aspect-ratio: 364\/644;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"644\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab.png\" alt=\"Google InAppBrowser Error\" class=\"aligncenter size-full wp-image-2896\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab.png 364w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/google-iab-170x300.png 170w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/noscript><\/a><\/p>\n<p><em>The error displayed if an app tries to sign into a Google Account using the InAppBrowser plugin<\/em><\/p>\n<h2>Pitfall #2 &#8211; Out-of-Date Security Practices<\/h2>\n<p>To make matters even worse, rapidly evolving security standards make it hard to keep pace with the latest in prescribed standards and best practices. As of iOS 10, the recommended way to accomplish the OAuth flow was to use the <code>SafariViewController<\/code> component. In iOS 11, it changed to <code>SFAuthenticationSession<\/code>, which was then deprecated in iOS 12 in favor of <code>ASWebAuthenticationSession<\/code>! There\u2019s a pretty good chance that there\u2019ll be new recommendations from Apple in future iOS releases.<\/p>\n<p>If you\u2019ve implemented this flow yourself or used an open source plugin, there is a reasonable chance that you\u2019re not using the most appropriate choice based on the version of iOS your user is on.<\/p>\n<h2>How Auth Connect Can Help<\/h2>\n<p>Auth Connect allows your team to avoid having to become experts on all authentication technical details, as well as keeping to date with the latest security best practices. We provide a simple interface for login, logout, registration, and retrieving security tokens back after a successful login. Developers simply fill in a configuration with your authentication service details such as Provider &amp; URL, and we take care of all the redirects, WebView presentation, and selecting the appropriate view controller based on the device\u2019s operating system.<\/p>\n<p><a href=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1375\" height=\"464\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault.png\" alt=\"Auth Connect Complete Workflow\" class=\"aligncenter size-full wp-image-2898 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault.png 1375w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault-300x101.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault-768x259.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault-1024x346.png 1024w\" data-sizes=\"auto, (max-width: 1375px) 100vw, 1375px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1375px; --smush-placeholder-aspect-ratio: 1375\/464;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1375\" height=\"464\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault.png\" alt=\"Auth Connect Complete Workflow\" class=\"aligncenter size-full wp-image-2898\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault.png 1375w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault-300x101.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault-768x259.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-identity-vault-1024x346.png 1024w\" sizes=\"auto, (max-width: 1375px) 100vw, 1375px\" \/><\/noscript><\/a><\/p>\n<p>As an Auth Connect subscriber, you also get ongoing security patches, integrations with new auth providers, and ongoing feature updates. Plus access to Ionic Support for help troubleshooting issues with the Auth Connect plugin or API.<\/p>\n<p><em>Native Security Components<\/em><br \/>\nRather than using an embedded browser, Auth Connect displays the UI from the authentication provider using native System Components, so neither your app nor the Auth Connect plugin is able to access user information required to log in. This makes sure your users stay protected and are not at risk of a JavaScript injection or other MITM-style attack.<\/p>\n<p><em>Single API, Any Auth Provider<\/em><br \/>\nAuth Connect makes it easy to integrate with multiple auth providers using a single, easy to use API. It includes pre-built integrations with popular providers like Auth0, AWS Cognito, and Azure Active Directory. Auth Connect can also be made to work with any other OAuth-based provider, including custom authentication solutions.<\/p>\n<p><em>Escaping Vendor Lock-In<\/em><br \/>\nAside from the obvious time savings of this approach, using Auth Connect over your own solution or a proprietary SDK provided by your authentication vendor helps to escape the vendor lock-in trap. More and more companies are starting multi-cloud initiatives (apps and services spread across different cloud providers), or moving to technologies like Docker and Kubernetes to mitigate the risks associated with vendor lock-in.<\/p>\n<p>These strategies can be great for your backend services but can still result in large portions of your client-side application having to be rewritten if you do decide to change vendors down the road due to cost or changes to company technology or strategy. Auth Connect helps avoid this situation by providing a simple, vendor-agnostic API based on the underlying protocols and standards each vendor uses. Thus, if you ever need to switch vendors, you simply update your authentication configuration to the new vendor, with no changes to your application\u2019s business logic.<\/p>\n<h2>Want to Learn More? Check Out Our Recorded Talk and Demo<\/h2>\n<p>The recording below is from a live presentation and demo that we delivered this week. It goes a little deeper on the common security pitfalls we mentioned above and shows how Auth Connect can address each one. Check it out if you&#8217;d like to learn more.<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" data-src=\"https:\/\/www.youtube.com\/embed\/2ouVuGj2J_Q\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<h2>Pricing and Availability<\/h2>\n<p>If you\u2019re interested in purchasing an Auth Connect subscription to help protect your users and add single sign-on to any of your Ionic apps, <a href=\"mailto:sales@ionicframework.com?subject=Auth%20Connect\">reach out to our sales team<\/a> to learn more.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week, we\u2019re excited to introduce Ionic Auth Connect, a new security solution that makes it easy to add single sign-on and secure user authentication to any of your Ionic apps. Auth Connect provides a simplified interface for developers attempting to implement authentication flows using common authentication services such as Microsoft Active Directory, AWS Cognito, [&hellip;]<\/p>\n","protected":false},"author":64,"featured_media":2899,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120],"tags":[156,141],"class_list":["post-2895","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","tag-auth-connect","tag-ionic-enterprise-edition"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ionic Auth Connect: Single Sign-On Made Easy - Ionic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ionic Auth Connect: Single Sign-On Made Easy\" \/>\n<meta property=\"og:description\" content=\"This week, we\u2019re excited to introduce Ionic Auth Connect, a new security solution that makes it easy to add single sign-on and secure user authentication to any of your Ionic apps. Auth Connect provides a simplified interface for developers attempting to implement authentication flows using common authentication services such as Microsoft Active Directory, AWS Cognito, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-26T14:46:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"880\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nick Hyatt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@NicholasPHyatt\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nick Hyatt\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\"},\"author\":{\"name\":\"Nick Hyatt\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/42a5ed64b6e0eff12a1fe57c21d4ac82\"},\"headline\":\"Ionic Auth Connect: Single Sign-On Made Easy\",\"datePublished\":\"2019-06-26T14:46:16+00:00\",\"dateModified\":\"2019-06-26T14:46:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\"},\"wordCount\":1079,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png\",\"keywords\":[\"Auth Connect\",\"Ionic Enterprise Edition\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\",\"url\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\",\"name\":\"Ionic Auth Connect: Single Sign-On Made Easy - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png\",\"datePublished\":\"2019-06-26T14:46:16+00:00\",\"dateModified\":\"2019-06-26T14:46:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png\",\"width\":1600,\"height\":880},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ionic Auth Connect: Single Sign-On Made Easy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/42a5ed64b6e0eff12a1fe57c21d4ac82\",\"name\":\"Nick Hyatt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/Nick-Hyatt-Headshot-150x150.jpeg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/Nick-Hyatt-Headshot-150x150.jpeg\",\"caption\":\"Nick Hyatt\"},\"sameAs\":[\"https:\/\/x.com\/NicholasPHyatt\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/nick\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ionic Auth Connect: Single Sign-On Made Easy - Ionic Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy","og_locale":"en_US","og_type":"article","og_title":"Ionic Auth Connect: Single Sign-On Made Easy","og_description":"This week, we\u2019re excited to introduce Ionic Auth Connect, a new security solution that makes it easy to add single sign-on and secure user authentication to any of your Ionic apps. Auth Connect provides a simplified interface for developers attempting to implement authentication flows using common authentication services such as Microsoft Active Directory, AWS Cognito, [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy","og_site_name":"Ionic Blog","article_published_time":"2019-06-26T14:46:16+00:00","og_image":[{"width":1600,"height":880,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png","type":"image\/png"}],"author":"Nick Hyatt","twitter_card":"summary_large_image","twitter_creator":"@NicholasPHyatt","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Nick Hyatt","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy"},"author":{"name":"Nick Hyatt","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/42a5ed64b6e0eff12a1fe57c21d4ac82"},"headline":"Ionic Auth Connect: Single Sign-On Made Easy","datePublished":"2019-06-26T14:46:16+00:00","dateModified":"2019-06-26T14:46:16+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy"},"wordCount":1079,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png","keywords":["Auth Connect","Ionic Enterprise Edition"],"articleSection":["Announcements"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy","url":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy","name":"Ionic Auth Connect: Single Sign-On Made Easy - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png","datePublished":"2019-06-26T14:46:16+00:00","dateModified":"2019-06-26T14:46:16+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png","width":1600,"height":880},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/ionic-auth-connect-single-sign-on-made-easy#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Ionic Auth Connect: Single Sign-On Made Easy"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/42a5ed64b6e0eff12a1fe57c21d4ac82","name":"Nick Hyatt","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/Nick-Hyatt-Headshot-150x150.jpeg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/Nick-Hyatt-Headshot-150x150.jpeg","caption":"Nick Hyatt"},"sameAs":["https:\/\/x.com\/NicholasPHyatt"],"url":"https:\/\/ionic.io\/blog\/author\/nick"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/06\/auth-connect-launch.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=2895"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2895\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/2899"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=2895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=2895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=2895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}