{"id":3776,"date":"2021-07-28T16:18:14","date_gmt":"2021-07-28T16:18:14","guid":{"rendered":"https:\/\/ionicframework.com\/blog\/?p=3776"},"modified":"2021-07-28T16:19:04","modified_gmt":"2021-07-28T16:19:04","slug":"announcing-identity-vault-5-0","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0","title":{"rendered":"Announcing Identity Vault 5.0"},"content":{"rendered":"<p>Today I\u2019m excited to announce <a href=\"https:\/\/ionic.io\/products\/identity-vault\">Identity Vault 5.0<\/a>, the newest version of Ionic\u2019s mobile biometrics solution. Featuring the latest in native security best practices, Identity Vault improves frontend security in any Ionic app by making it easy to add secure biometric authentication in minutes.<\/p>\n<p>We created Identity Vault after many concerned enterprise teams told us they weren\u2019t confident in their frontend security implementations. The concern is valid: if a device falls into the wrong hands and an app\u2019s data (such as authentication tokens) is compromised, users could be vulnerable to data loss and unauthorized access to their accounts. That\u2019s really bad for users, and it\u2019s also dangerous to the integrity of your backend systems and public perception.<\/p>\n<p>It turns out that many frontend authentication workflows store tokens where anyone can view and access them (such as in LocalStorage) or using weak authentication logic (such as using miscellaneous Cordova plugins) that are easily compromised. Identity Vault keeps users protected with the latest in multi-layer native security and best practices for storing authentication data on-device.<\/p>\n<p><!--more--><\/p>\n<p>But that\u2019s not all that Identity Vault offers. There\u2019s also:<\/p>\n<ul>\n<li>Native security that protects user data from ever leaving the device<\/li>\n<li>Safe, private, and encrypted storage of authentication tokens and other sensitive information<\/li>\n<li>Agnostic backend design works with any authentication provider or custom API<\/li>\n<li>Always-on Session Management to keep your users protected at all times<\/li>\n<li>Modular, easy to consume service that integrates with any new or existing Web Native apps<\/li>\n<li>Ongoing updates and maintenance, backed by Ionic\u2019s mobile experts<\/li>\n<li>Developer-friendly docs, tutorials, and videos to get you started<\/li>\n<li>Advisory services and mission-critical support SLAs<\/li>\n<\/ul>\n<p>Identity Vault 5.0 expands on the above, with an easier-to-use API, better React, Vue, and plain JavaScript compatibility, an enhanced local development experience, and flexible Android biometric options.<\/p>\n<h2>Easier to Use API<\/h2>\n<p>Identity Vault combines over twelve APIs and native features into a single plugin. That primarily includes ensuring user identity and session tokens are managed correctly \u2014 encrypted at rest and accessible only through biometric authentication mechanisms like facial recognition, fingerprint, or PIN. Then there are other security features such as background data hiding (privacy screen) and native session timeouts that make Identity Vault an all-in-one frontend security solution for mobile apps.<\/p>\n<p>With so many features being added over time, user feedback informed us that the API was getting a bit <em>robust<\/em> and thus challenging to work with. So, we took a fresh approach and revamped the API to be simpler and easier to use.<\/p>\n<p>Let\u2019s take a quick tour of the main concepts using Angular as the example framework. First, we recommend creating a service named <code>vault<\/code> to encapsulate all the logic that interacts with the Vault:<\/p>\n<pre><code class=\"language-bash\">ionic generate service vault\n<\/code><\/pre>\n<p>This creates a file named <code>src\/app\/vault.service.ts<\/code>. Next, import the <code>Vault<\/code> object, define an interface used to store session data, and call the <code>init<\/code> function from the constructor:<\/p>\n<pre><code class=\"language-typescript\">import { Injectable } from &#039;@angular\/core&#039;;\nimport { Device, DeviceSecurityType, Vault, VaultType } \n  from &#039;@ionic-enterprise\/identity-vault&#039;;\n\nexport interface VaultServiceState {\n  session: string;  \n}\n\n@Injectable({\n  providedIn: &#039;root&#039;\n})\n\nexport class VaultService {\n  public state: VaultServiceState = {\n    session: &#039;&#039;    \n  };\n\n  vault: Vault | BrowserVault;\n\n  constructor() {\n    this.init();\n  }\n<\/code><\/pre>\n<p>Next, instantiate the <code>Vault<\/code> with a variety of configuration options:<\/p>\n<pre><code class=\"language-typescript\">async init() {\n  this.vault = new Vault({\n     key: &#039;io.ionic.getstarted.ivangular&#039;,\n     type: VaultType.DeviceSecurity,\n     deviceSecurityType: DeviceSecurityType.Both,\n     lockAfterBackgrounded: 2000,\n     customPasscodeInvalidUnlockAttempts: 2,\n     shouldClearVaultAfterTooManyFailedAttempts: true,\n     unlockVaultOnLoad: false,\n  });\n}\n<\/code><\/pre>\n<p>These options make up the core of how Identity Vault is configured. Apps can create multiple vaults, so provide a unique name in the <code>key<\/code> field. The next option, <code>type<\/code>, is the most important since it determines how the vault will be secured. We recommend most apps use <code>DeviceSecurity<\/code> and device security type <code>Both<\/code> as this utilizes biometrics followed by System Passcode to authenticate app users. Additional vault type options include <code>SecureStorage<\/code> (no additional security is required in the app as long as the device was unlocked with a secure method), <code>CustomPasscode<\/code> (user will set a custom passcode to access the vault), and <code>InMemory<\/code> (data will persist only while the application is in memory).<\/p>\n<p>The other major vault configuration options relate to locking the vault. <code>lockAfterBackgrounded<\/code> will lock the vault after it has been in the background after the specified number of milliseconds has passed. <code>customPasscodeInvalidUnlockAttempts<\/code> controls how many failed unlock attempts are allowed if <code>shouldClearVaultAfterTooManyFailedAttempts<\/code> is enabled. If the limit is reached, all data stored in the vault is deleted. Finally, <code>unlockVaultOnLoad<\/code> will attempt to unlock the vault when the app launches and resumes from the background.<\/p>\n<p>A key feature of Identity Vault is the ability to store sensitive information encrypted at rest. This is possible using the <code>setValue<\/code> function, a key\/value API:<\/p>\n<pre><code class=\"language-typescript\">private async storeValue(key: string, value: string): Promise&lt;void&gt; {\n   await this.vault.setValue(key, value);\n}\n\nthis.storeValue(\u201ctoken\u201d, \u201cIONIC_FTW\u201d);\n<\/code><\/pre>\n<p>Speaking of securing sensitive data, <a href=\"https:\/\/ionic.io\/products\/auth-connect\">Auth Connect<\/a>, Ionic\u2019s native solution for easy single sign-on implementations is designed to work easily with Identity Vault. In just one line of code, Auth Connect\u2019s logged-in credentials can be stored securely by passing an instance of Identity Vault to Auth Connect\u2019s <code>tokenStorageProvider<\/code> configuration option:<\/p>\n<pre><code class=\"language-typescript\">import { IonicAuth } from &#039;@ionic-enterprise\/auth&#039;;\nimport { VaultService } from &#039;.\/vault.service&#039;;\n\n@Injectable({\n  providedIn: &#039;root&#039;\n})\n\nexport class AuthenticationService extends IonicAuth {\n\n  constructor(vaultService: VaultService) {\n    let authConfig: IonicAuthOptions = {\n      authConfig: &#039;auth0&#039;,\n      platform: &#039;capacitor&#039;,\n      \/\/ snip - other options\n    };\n\n    \/\/ Pass Identity Vault instance here\n    authConfig.tokenStorageProvider = vaultService.vault;\n\n    super(authConfig);\n  }\n<\/code><\/pre>\n<h3>Device API<\/h3>\n<p>There are some capabilities that Identity Vault allows you to control that are applicable to the device that the application is running on rather than being applicable to any given vault. For these, you can use Identity Vault\u2019s <code>Device<\/code> API.<\/p>\n<p>The most notable feature is the &#8220;privacy screen.&#8221; When an application is put into the background, the default OS behavior displays a screenshot of the current page while the user scrolls through the open applications. However, if your application displays sensitive information, you may not want that, so another option is to display the splash screen (on iOS) or a plain rectangle (on Android) instead of the screenshot. To hide the screen, use the <code>setHideScreenOnBackground<\/code> method:<\/p>\n<pre><code class=\"language-typescript\">&lt;br \/&gt;async init() {\n  \/\/ snip - Vault configuration\n  Device.setHideScreenOnBackground(true);\n}\n<\/code><\/pre>\n<p>This is just a taste of all that Identity Vault has to offer. To view all features, see the <a href=\"https:\/\/ionic.io\/docs\/identity-vault\">Identity Vault docs<\/a>.<\/p>\n<h2>Better React, Vue, and Plain JS Compatibility<\/h2>\n<p>The original version of Identity Vault was built when most Ionic products, including Ionic Framework, only supported Angular. In addition to being simpler and easier to use, Identity Vault 5.0 moved away from the old inheritance-based mechanism of construction and configuration to a more functional approach. This simplifies both integrations in frameworks such as React and Vue and also helps it to feel more familiar with the JavaScript programming style. This means that teams looking to add biometric security to their apps will feel right at home using their framework of choice. Here\u2019s how a React app uses Identity Vault (<a href=\"https:\/\/ionic.io\/docs\/identity-vault\/getting-started-vue\">get started with Vue here<\/a>):<\/p>\n<p>First, create a file named <code>src\/hooks\/useVault.ts<\/code>. Within this file, we will create a hook that defines the vault and all functions needed to interact with the vault.<\/p>\n<pre><code class=\"language-typescript\">\/\/ src\/hooks\/useVault.ts\nimport { useMemo } from &quot;react&quot;;\nimport { IdentityVaultConfig, Vault } from &quot;@ionic-enterprise\/identity-vault&quot;;\n\nconst config: IdentityVaultConfig = {\n  key: &quot;io.ionic.getstarted.ivreact&quot;,\n  type: VaultType.DeviceSecurity,\n  deviceSecurityType: DeviceSecurityType.Both,\n  lockAfterBackgrounded: 2000,\n  shouldClearVaultAfterTooManyFailedAttempts: true,\n  customPasscodeInvalidUnlockAttempts: 2,\n  unlockVaultOnLoad: false,\n};\n\nexport const useVault = () =&gt; {\n  const vault = useMemo(() =&gt; {\n    const vault = new Vault(config);\n\n    return vault;\n  }, []);\n}\n<\/code><\/pre>\n<p>While there are some React-specific concepts there, such as <code>useMemo<\/code> and the <code>useVault<\/code> hook declaration, the rest of the code is the same as the Angular example. Next, to store sensitive information encrypted at rest, we again use the <code>setValue<\/code> function, a key\/value API:<\/p>\n<pre><code class=\"language-typescript\">const storeValue = async (key: string, value: string): Promise&lt;void&gt; =&gt; {\n   await vault.setValue(key, value);\n};\n\nstoreValue(\u201ctoken\u201d, \u201cIONIC_FTW\u201d);\n<\/code><\/pre>\n<p>Now, to use the vault, we can pull the <code>useVault<\/code> hook we just created into the <code>Home<\/code> page:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Home.tsx\nimport { useVault } from &quot;..\/hooks\/useVault&quot;;\n\nconst Home: React.FC = () =&gt; {\n  const { storeValue } = useVault();\n\n  return (\n    &lt;IonPage&gt;\n      &lt;IonContent fullscreen&gt;\n       &lt;IonLabel&gt;Enter the &quot;session&quot; data&lt;\/IonLabel&gt;\n        &lt;IonInput value={data} \/&gt;\n\n        &lt;IonButton expand=&quot;block&quot; onClick={() =&gt; storeValue(\u201csession\u201d, data)}&gt;\n           Set Session Data\n        &lt;\/IonButton&gt;\n      &lt;\/IonContent&gt;\n    &lt;\/IonPage&gt;\n  );\n}\n\n<\/code><\/pre>\n<p>As you can see, using Identity Vault <a href=\"https:\/\/ionic.io\/docs\/identity-vault\/getting-started-react\">in a React app<\/a> combines biometric security with familiar React concepts, providing a solution that\u2019s easy to drop in.<\/p>\n<h2>Enhanced Local Development Experience<\/h2>\n<p>Identity Vault is not supported in the browser, primarily since the browser does not have a secure location for storing data like mobile devices do (besides the built-in <a href=\"https:\/\/web.dev\/browser-sandbox\/\">browser sandbox<\/a> itself). Usually, we build Ionic apps locally in the browser to maintain the speed of web development, so to accomplish this with Identity Vault, a special class is available.<\/p>\n<p>The <code>BrowserVault<\/code> is a new class that implements all the same methods as the standard vault. However, methods that require native interaction, such as biometric authentication, are stubbed out (effectively doing nothing when called) and all data is stored in LocalStorage.<\/p>\n<p>The <code>BrowserVault<\/code> should be used conditionally based on the platform your application is running on:<\/p>\n<pre><code class=\"language-typescript\">import { Capacitor } from &#039;@capacitor\/core&#039;;\n\nconst vault = Capacitor.isNativePlatform()\n                ? new Vault(config) \n                : new BrowserVault(config);\n<\/code><\/pre>\n<p>All vault methods should exhibit the same behavior, allowing your application to run as expected regardless of the platform it\u2019s running on.<\/p>\n<h2>Flexible Android Biometric Security<\/h2>\n<p>Biometric security is classified into tiers based on <em>architectural security<\/em> (resiliency to compromise) and <em>spoofability<\/em> (resiliency to a dedicated attacker) tests. A biometric implementation can be classified as Class 3 (Strong) or Class 2 (Weak). Identity Vault 4 has always required the use of Class 3 biometrics to securely store data on a device. However, this meant that if a user on an Android device only had a Weak biometric option enabled, Identity Vault v4 would fail to authenticate the user unless a workaround was provided, such as using an app-specific passcode instead.<\/p>\n<p>It\u2019s important to note that all biometric classifications are unique to the device, meaning that the same biometric on one device can be rated as a Class 3 biometric, but rated as a Class 2 biometric on a different device. One prominent example of this is with Samsung devices. The Samsung Galaxy S10 has two main biometric features available, Fingerprint and FaceID. For this device, the Fingerprint scanner qualifies as a Class 3 security implementation whereas the FaceID only qualifies as a Class 2. The result of these classifications was that if a user only had FaceID configured, Identity Vault could not use that for biometric authentication. Contrast this against the Google Pixel 4, a device with a FaceID implementation that qualifies as Class 3 biometric security, allowing it to work with Identity Vault.<\/p>\n<p>Identity Vault v5.0 still defaults to Class 3, but adds support for Class 2 biometrics on Android, adding more flexibility than previously available. Now, developers can choose their risk tolerance for the app, optionally permitting Class 2 biometrics for user authentication with no effort on their part.<\/p>\n<p>Or, to check the supported biometric security class, use the Device API provided by Identity Vault:<\/p>\n<pre><code class=\"language-typescript\">const strength = Device.getBiometricStrengthLevel();\n\nif (strength === BiometricSecurityStrength.Weak) {\n  \/\/ User does not have a strong biometric feature available\n  \/\/ Optionally throw an error, warn the user, or ignore\n}\n<\/code><\/pre>\n<p>This fulfills our promise to always provide the latest in security best practices, so your team can rest assured that your apps and users are secure.<\/p>\n<h2>Migrating Vault Data from v4 to v5<\/h2>\n<p>The entire Vault API was redesigned in Identity Vault 5.0. Because of this, it&#8217;s not possible to access your stored vault data from version 4 using the new Vault API. To seamlessly handle this transition, we&#8217;ve created a <code>VaultMigrator<\/code> class so you can pull your existing data out of the old vault and insert it into the new one.<\/p>\n<pre><code class=\"language-typescript\">\/\/ Create new Identity Vault 5 vault\nconst vault = new Vault({\n  \/\/ new V5 config\n});\n\nconst migrator = new VaultMigrator({\n  \/\/ old V4 config\n});\n\n\/\/ Migrate the v4 vault to v5 once\nif (!localStorage.vaultMigrated) {\n  const oldData = await migrator.exportVault();\n  if (!!oldData) {\n    \/\/ Import data into new vault\n    await vault.importVault(oldData);\n\n    \/\/ Remove all of the old data from the legacy vault\n    await migrator.clear();\n\n    localStorage.vaultMigrated = true;\n  }\n}\n<\/code><\/pre>\n<p><a href=\"https:\/\/ionic.io\/docs\/identity-vault\/upgrading\">View complete migration details here.<\/a><\/p>\n<h2>Secure Your Apps Today<\/h2>\n<p>It\u2019s never been more important to protect your apps and users. If you\u2019d like to learn more about how Identity Vault is helping other enterprises make their apps more secure, <a href=\"https:\/\/ionic.io\/products\/identity-vault#demo\">reach out to sales<\/a> to schedule a private demo and get customized pricing based on your needs. Or, try it in your app along with other Ionic native solutions with <a href=\"https:\/\/dashboard.ionicframework.com\/personal\/apps?native_trial=1\">a free trial here<\/a>.<\/p>\n<p>You can also view our <a href=\"https:\/\/ionic.io\/resources\/webinars\/identity-vault-all-in-one-biometrics-solution\">Identity Vault webinar<\/a> which covers mobile security best practices and a live demo of Identity Vault 5.0\u2019s new features.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I\u2019m excited to announce Identity Vault 5.0, the newest version of Ionic\u2019s mobile biometrics solution. Featuring the latest in native security best practices, Identity Vault improves frontend security in any Ionic app by making it easy to add secure biometric authentication in minutes. We created Identity Vault after many concerned enterprise teams told us [&hellip;]<\/p>\n","protected":false},"author":86,"featured_media":3785,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"1","publish_post_category":"6","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"529360","discourse_permalink":"https:\/\/forum.ionicframework.com\/t\/announcing-identity-vault-5-0\/213069","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[122],"tags":[192,104,195],"class_list":["post-3776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product","tag-authentication","tag-identity-vault","tag-security"],"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>Announcing Identity Vault 5.0 - 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\/announcing-identity-vault-5-0\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing Identity Vault 5.0\" \/>\n<meta property=\"og:description\" content=\"Today I\u2019m excited to announce Identity Vault 5.0, the newest version of Ionic\u2019s mobile biometrics solution. Featuring the latest in native security best practices, Identity Vault improves frontend security in any Ionic app by making it easy to add secure biometric authentication in minutes. We created Identity Vault after many concerned enterprise teams told us [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-28T16:18:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-28T16:19:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.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=\"Dallas James\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dallas James\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0\"},\"author\":{\"name\":\"Dallas James\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/5f54036a400c733439d8ac782a6b332a\"},\"headline\":\"Announcing Identity Vault 5.0\",\"datePublished\":\"2021-07-28T16:18:14+00:00\",\"dateModified\":\"2021-07-28T16:19:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0\"},\"wordCount\":1717,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png\",\"keywords\":[\"authentication\",\"Identity Vault\",\"security\"],\"articleSection\":[\"Product\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0\",\"url\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0\",\"name\":\"Announcing Identity Vault 5.0 - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png\",\"datePublished\":\"2021-07-28T16:18:14+00:00\",\"dateModified\":\"2021-07-28T16:19:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png\",\"width\":1600,\"height\":880,\"caption\":\"identity-vault-5\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing Identity Vault 5.0\"}]},{\"@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\/5f54036a400c733439d8ac782a6b332a\",\"name\":\"Dallas James\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/dallas-james-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/dallas-james-150x150.jpg\",\"caption\":\"Dallas James\"},\"url\":\"https:\/\/ionic.io\/blog\/author\/dallas\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Announcing Identity Vault 5.0 - 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\/announcing-identity-vault-5-0","og_locale":"en_US","og_type":"article","og_title":"Announcing Identity Vault 5.0","og_description":"Today I\u2019m excited to announce Identity Vault 5.0, the newest version of Ionic\u2019s mobile biometrics solution. Featuring the latest in native security best practices, Identity Vault improves frontend security in any Ionic app by making it easy to add secure biometric authentication in minutes. We created Identity Vault after many concerned enterprise teams told us [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0","og_site_name":"Ionic Blog","article_published_time":"2021-07-28T16:18:14+00:00","article_modified_time":"2021-07-28T16:19:04+00:00","og_image":[{"width":1600,"height":880,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png","type":"image\/png"}],"author":"Dallas James","twitter_card":"summary_large_image","twitter_creator":"@ionicframework","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Dallas James","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0"},"author":{"name":"Dallas James","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/5f54036a400c733439d8ac782a6b332a"},"headline":"Announcing Identity Vault 5.0","datePublished":"2021-07-28T16:18:14+00:00","dateModified":"2021-07-28T16:19:04+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0"},"wordCount":1717,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png","keywords":["authentication","Identity Vault","security"],"articleSection":["Product"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0","url":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0","name":"Announcing Identity Vault 5.0 - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png","datePublished":"2021-07-28T16:18:14+00:00","dateModified":"2021-07-28T16:19:04+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png","width":1600,"height":880,"caption":"identity-vault-5"},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/announcing-identity-vault-5-0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Announcing Identity Vault 5.0"}]},{"@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\/5f54036a400c733439d8ac782a6b332a","name":"Dallas James","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/dallas-james-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/dallas-james-150x150.jpg","caption":"Dallas James"},"url":"https:\/\/ionic.io\/blog\/author\/dallas"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2021\/07\/iv-5-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/3776","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\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=3776"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/3776\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/3785"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=3776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=3776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=3776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}