---
description: Discover the Capawesome OAuth plugin as a modern alternative to the discontinued Ionic Auth Connect plugin for Capacitor apps.
title: Alternative to the Ionic Auth Connect Plugin - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/alternative-to-ionic-auth-connect-plugin.png
---

[ Skip to content](#alternative-to-the-ionic-auth-connect-plugin) 

[ 🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode.](/blog/announcing-the-capacitor-vault-plugin/) 

* [  SDKs ](/docs/sdks/)
* [  Formbricks ](/docs/sdks/capacitor/formbricks/)
* [  Geocoder ](/docs/sdks/capacitor/geocoder/)
* [  Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [  Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [  libSQL ](/docs/sdks/capacitor/libsql/)
* [  Live Update ](/docs/sdks/capacitor/live-update/)
* [  Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [  Media Session ](/docs/sdks/capacitor/media-session/)
* [  ML Kit ](/docs/sdks/capacitor/mlkit/)
* [  Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [  NFC ](/docs/sdks/capacitor/nfc/)
* [  OAuth ](/docs/sdks/capacitor/oauth/)
* [  Pedometer ](/docs/sdks/capacitor/pedometer/)
* [  Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [  PostHog ](/docs/sdks/capacitor/posthog/)
* [  Printer ](/docs/sdks/capacitor/printer/)
* [  Purchases ](/docs/sdks/capacitor/purchases/)
* [  RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [  Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [  Screenshot ](/docs/sdks/capacitor/screenshot/)
* [  Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [  Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [  Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [  Share Target ](/docs/sdks/capacitor/share-target/)
* [  Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [  SQLite ](/docs/sdks/capacitor/sqlite/)
* [  Superwall ](/docs/sdks/capacitor/superwall/)
* [  Torch ](/docs/sdks/capacitor/torch/)
* [  Vault ](/docs/sdks/capacitor/vault/)
* [  Wifi ](/docs/sdks/capacitor/wifi/)
* [  Zip ](/docs/sdks/capacitor/zip/)
* [  Cordova ](/docs/sdks/cordova/)
* [  Cloud ](/docs/cloud/)
* [  Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [  Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [  FAQ ](/docs/cloud/live-updates/faq/)
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Set Up Environments ](/docs/cloud/native-builds/environments/)
* [  Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [  Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [  Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [  Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [  Use pnpm or Yarn ](/docs/cloud/native-builds/package-managers/)
* [  Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [  Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [  Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [  Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [  Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [  Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  FAQ ](/docs/cloud/native-builds/faq/)
* [  App Store Publishing ](/docs/cloud/app-store-publishing/)
* [  Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [  Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [  Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [  FAQ ](/docs/cloud/app-store-publishing/faq/)
* [  Automations ](/docs/cloud/automations/)
* [  Reference ](/docs/cloud/automations/reference/)
* [  Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [  FAQ ](/docs/cloud/automations/faq/)
* [  Assist ](/docs/cloud/assist/)
* [  CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Integrations ](/docs/cloud/integrations/)
* Account
* [  Organization ](/docs/cloud/organizations/)
* [  Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [  Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [  Billing ](/docs/cloud/organizations/billing/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  AI ](/docs/ai/)
* [  Insiders ](/docs/insiders/)
* [  Billing & Plans ](/docs/insiders/billing-and-plans/)
* [  FAQ ](/docs/insiders/faq/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/support/)
* [  Contributing ](/docs/contributing/)
* Contributing code
* [  Code of Conduct ](/docs/contributing/code-of-conduct/)
* [  Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [  Blog ](/blog/)
* Categories

* [  Need Help Migrating? ](#need-help-migrating)
* [  Conclusion ](#conclusion)

* Related links

# Alternative to the Ionic Auth Connect Plugin[¶](#alternative-to-the-ionic-auth-connect-plugin "Permanent link")

Need SSO authentication in your Capacitor app? With [Ionic discontinuing](https://ionic.io/blog/important-announcement-the-future-of-ionics-commercial-products) their commercial Auth Connect plugin, many developers are searching for a reliable replacement. The Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) provides a modern, production-ready alternative that supports OAuth 2.0 and OpenID Connect with PKCE across Android, iOS, and Web.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](/) 

## Introduction[¶](#introduction "Permanent link")

Ionic Auth Connect has been a popular choice for adding OAuth and OpenID Connect authentication to Capacitor apps. It handled login flows, token management, and session handling across platforms. However, following Ionic's acquisition by OutSystems and the decision to wind down their commercial products, developers need to find an alternative that keeps their apps running and their auth flows secure.

The Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) fills this gap. It implements the OAuth 2.0 Authorization Code flow with PKCE, supports automatic OpenID Connect discovery, and works with any compliant provider — including Auth0, Azure AD, Amazon Cognito, Okta, OneLogin, and Google.

## Feature Comparison[¶](#feature-comparison "Permanent link")

Here's how the two plugins stack up:

| Feature                             | Ionic Auth Connect | Capawesome OAuth                                                                           |
| ----------------------------------- | ------------------ | ------------------------------------------------------------------------------------------ |
| OAuth 2.0 Authorization Code + PKCE | Yes                | Yes                                                                                        |
| OpenID Connect support              | Yes                | Yes                                                                                        |
| Automatic endpoint discovery        | Yes                | Yes                                                                                        |
| Token refresh                       | Yes                | Yes                                                                                        |
| ID token decoding                   | Yes                | Yes                                                                                        |
| Access token expiration check       | Yes                | Yes                                                                                        |
| Multi-provider support              | Yes                | Yes                                                                                        |
| Android support                     | Yes                | Yes                                                                                        |
| iOS support                         | Yes                | Yes                                                                                        |
| Web support                         | Yes                | Yes                                                                                        |
| Secure token storage                | Separate plugin    | Works with [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/) |
| Actively maintained                 | No (discontinued)  | Yes                                                                                        |

The Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) covers the core authentication functionality most teams need, with a clean API and active maintenance.

AI-Assisted Migration

For a more guided experience, add the [Capawesome skills](https://github.com/capawesome-team/skills) to your project with `npx skills add capawesome-team/skills --skill ionic-enterprise-sdk-migration` and use the following prompt with your preferred AI coding assistant:

`` [](#%5F%5Fcodelineno-0-1)Use the `ionic-enterprise-sdk-migration` skill from `capawesome-team/skills` to help me migrate from Ionic Auth Connect to the Capawesome OAuth plugin.
 ``

## Migration from Auth Connect[¶](#migration-from-auth-connect "Permanent link")

Migrating from Ionic Auth Connect to the Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) is straightforward. The following sections walk through each common operation with side-by-side code examples.

### Installation[¶](#installation "Permanent link")

Begin by removing the existing Auth Connect dependency and installing the Capawesome alternative, if you haven't already. To install the Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/), please refer to the [Installation](/docs/sdks/capacitor/oauth/#installation) section in the plugin documentation.

### Setup[¶](#setup "Permanent link")

Auth Connect requires an explicit setup step before use. The Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) doesn't need any upfront configuration — you pass all required options directly to each method call.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-1-1)import { AuthConnect, ProviderOptions } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-1-2)
[](#%5F%5Fcodelineno-1-3)const setup = async () => {
[](#%5F%5Fcodelineno-1-4)  await AuthConnect.setup({
[](#%5F%5Fcodelineno-1-5)    platform: 'capacitor',
[](#%5F%5Fcodelineno-1-6)    logLevel: 'DEBUG',
[](#%5F%5Fcodelineno-1-7)    ios: { webView: 'private' },
[](#%5F%5Fcodelineno-1-8)    web: { uiMode: 'popup', authFlow: 'PKCE' },
[](#%5F%5Fcodelineno-1-9)  });
[](#%5F%5Fcodelineno-1-10)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-2-1)// No setup needed — ready to use immediately
`

### Logging in[¶](#logging-in "Permanent link")

Both plugins initiate an OAuth flow, but the API differs. With the Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/), you pass the provider configuration directly to the [login(...)](/docs/sdks/capacitor/oauth/#login) method.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-3-1)import { AuthConnect, Auth0Provider } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const login = async () => {
[](#%5F%5Fcodelineno-3-4)  const provider = new Auth0Provider();
[](#%5F%5Fcodelineno-3-5)  const result = await AuthConnect.login(provider, {
[](#%5F%5Fcodelineno-3-6)    audience: 'https://api.example.com',
[](#%5F%5Fcodelineno-3-7)    clientId: 'YOUR_CLIENT_ID',
[](#%5F%5Fcodelineno-3-8)    discoveryUrl: 'https://example.auth0.com/.well-known/openid-configuration',
[](#%5F%5Fcodelineno-3-9)    redirectUri: 'com.example.app://callback',
[](#%5F%5Fcodelineno-3-10)    scope: 'openid profile email offline_access',
[](#%5F%5Fcodelineno-3-11)    logoutUrl: 'com.example.app://logout',
[](#%5F%5Fcodelineno-3-12)  });
[](#%5F%5Fcodelineno-3-13)  return result;
[](#%5F%5Fcodelineno-3-14)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-4-1)import { Oauth } from '@capawesome-team/capacitor-oauth';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const login = async () => {
[](#%5F%5Fcodelineno-4-4)  const result = await Oauth.login({
[](#%5F%5Fcodelineno-4-5)    issuerUrl: 'https://example.auth0.com',
[](#%5F%5Fcodelineno-4-6)    clientId: 'YOUR_CLIENT_ID',
[](#%5F%5Fcodelineno-4-7)    redirectUrl: 'com.example.app://oauth/callback',
[](#%5F%5Fcodelineno-4-8)    scopes: ['openid', 'profile', 'email', 'offline_access'],
[](#%5F%5Fcodelineno-4-9)    additionalParameters: { audience: 'https://api.example.com' },
[](#%5F%5Fcodelineno-4-10)  });
[](#%5F%5Fcodelineno-4-11)  return result;
[](#%5F%5Fcodelineno-4-12)};
`

A few key differences to note:

* **Provider configuration**: Auth Connect uses provider-specific classes (e.g., `Auth0Provider`). The Capawesome plugin uses a single, universal API for all providers.
* **Discovery**: Auth Connect requires the full discovery URL. The Capawesome plugin only needs the issuer URL and resolves the discovery document automatically.
* **Scopes**: Auth Connect takes a space-delimited string, while the Capawesome plugin takes an array.

### Handling the redirect callback[¶](#handling-the-redirect-callback "Permanent link")

On the web platform, Auth Connect provides a `handleLoginCallback` method. The Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) has an equivalent [handleRedirectCallback()](/docs/sdks/capacitor/oauth/#handleredirectcallback) method.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-5-1)import { AuthConnect } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const handleCallback = async () => {
[](#%5F%5Fcodelineno-5-4)  const result = await AuthConnect.handleLoginCallback(window.location.href);
[](#%5F%5Fcodelineno-5-5)  return result;
[](#%5F%5Fcodelineno-5-6)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-6-1)import { Oauth } from '@capawesome-team/capacitor-oauth';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const handleCallback = async () => {
[](#%5F%5Fcodelineno-6-4)  const result = await Oauth.handleRedirectCallback();
[](#%5F%5Fcodelineno-6-5)  return result;
[](#%5F%5Fcodelineno-6-6)};
`

This step is only required on the web. On Android and iOS, the redirect is handled natively.

### Refreshing tokens[¶](#refreshing-tokens "Permanent link")

Token refresh follows a similar pattern. Auth Connect uses a combined `AuthResult` object, while the Capawesome plugin takes individual parameters.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-7-1)import { AuthConnect, Auth0Provider } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const refreshSession = async (authResult) => {
[](#%5F%5Fcodelineno-7-4)  const provider = new Auth0Provider();
[](#%5F%5Fcodelineno-7-5)  const newResult = await AuthConnect.refreshSession(provider, authResult);
[](#%5F%5Fcodelineno-7-6)  return newResult;
[](#%5F%5Fcodelineno-7-7)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-8-1)import { Oauth } from '@capawesome-team/capacitor-oauth';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const refreshToken = async (refreshToken: string) => {
[](#%5F%5Fcodelineno-8-4)  const result = await Oauth.refreshToken({
[](#%5F%5Fcodelineno-8-5)    issuerUrl: 'https://example.auth0.com',
[](#%5F%5Fcodelineno-8-6)    clientId: 'YOUR_CLIENT_ID',
[](#%5F%5Fcodelineno-8-7)    refreshToken,
[](#%5F%5Fcodelineno-8-8)  });
[](#%5F%5Fcodelineno-8-9)  return result;
[](#%5F%5Fcodelineno-8-10)};
`

### Checking token state[¶](#checking-token-state "Permanent link")

Both plugins provide utility methods for checking token availability and expiration.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-9-1)import { AuthConnect } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const checkTokenState = async (authResult) => {
[](#%5F%5Fcodelineno-9-4)  const isExpired = await AuthConnect.isAccessTokenExpired(authResult);
[](#%5F%5Fcodelineno-9-5)  const isAvailable = await AuthConnect.isAccessTokenAvailable(authResult);
[](#%5F%5Fcodelineno-9-6)  const isRefreshAvailable = await AuthConnect.isRefreshTokenAvailable(authResult);
[](#%5F%5Fcodelineno-9-7)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-10-1)import { Oauth } from '@capawesome-team/capacitor-oauth';
[](#%5F%5Fcodelineno-10-2)
[](#%5F%5Fcodelineno-10-3)const checkTokenState = async (
[](#%5F%5Fcodelineno-10-4)  accessToken: string,
[](#%5F%5Fcodelineno-10-5)  accessTokenExpirationDate: number,
[](#%5F%5Fcodelineno-10-6)  refreshToken: string
[](#%5F%5Fcodelineno-10-7)) => {
[](#%5F%5Fcodelineno-10-8)  const { isExpired } = await Oauth.isAccessTokenExpired({
[](#%5F%5Fcodelineno-10-9)    accessTokenExpirationDate,
[](#%5F%5Fcodelineno-10-10)  });
[](#%5F%5Fcodelineno-10-11)  const { isAvailable } = await Oauth.isAccessTokenAvailable({
[](#%5F%5Fcodelineno-10-12)    accessToken,
[](#%5F%5Fcodelineno-10-13)  });
[](#%5F%5Fcodelineno-10-14)  const { isAvailable: isRefreshAvailable } = await Oauth.isRefreshTokenAvailable({
[](#%5F%5Fcodelineno-10-15)    refreshToken,
[](#%5F%5Fcodelineno-10-16)  });
[](#%5F%5Fcodelineno-10-17)};
`

The main difference is that Auth Connect operates on the `AuthResult` object, while the Capawesome plugin takes individual values. This gives you more flexibility in how you store and manage your tokens.

### Decoding the ID token[¶](#decoding-the-id-token "Permanent link")

Both plugins can decode JWT ID tokens locally.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-11-1)import { AuthConnect } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-11-2)
[](#%5F%5Fcodelineno-11-3)const decodeToken = async (authResult) => {
[](#%5F%5Fcodelineno-11-4)  const decoded = await AuthConnect.decodeToken('id', authResult);
[](#%5F%5Fcodelineno-11-5)  return decoded;
[](#%5F%5Fcodelineno-11-6)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-12-1)import { Oauth } from '@capawesome-team/capacitor-oauth';
[](#%5F%5Fcodelineno-12-2)
[](#%5F%5Fcodelineno-12-3)const decodeIdToken = async (idToken: string) => {
[](#%5F%5Fcodelineno-12-4)  const { header, payload } = await Oauth.decodeIdToken({
[](#%5F%5Fcodelineno-12-5)    token: idToken,
[](#%5F%5Fcodelineno-12-6)  });
[](#%5F%5Fcodelineno-12-7)  return payload;
[](#%5F%5Fcodelineno-12-8)};
`

### Logging out[¶](#logging-out "Permanent link")

Both plugins support ending the user's session through the provider's end-session endpoint.

**Ionic Auth Connect:**

`[](#%5F%5Fcodelineno-13-1)import { AuthConnect, Auth0Provider } from '@ionic-enterprise/auth';
[](#%5F%5Fcodelineno-13-2)
[](#%5F%5Fcodelineno-13-3)const logout = async (authResult) => {
[](#%5F%5Fcodelineno-13-4)  const provider = new Auth0Provider();
[](#%5F%5Fcodelineno-13-5)  await AuthConnect.logout(provider, authResult);
[](#%5F%5Fcodelineno-13-6)};
`

**Capawesome OAuth:**

`[](#%5F%5Fcodelineno-14-1)import { Oauth } from '@capawesome-team/capacitor-oauth';
[](#%5F%5Fcodelineno-14-2)
[](#%5F%5Fcodelineno-14-3)const logout = async (idToken: string) => {
[](#%5F%5Fcodelineno-14-4)  await Oauth.logout({
[](#%5F%5Fcodelineno-14-5)    issuerUrl: 'https://example.auth0.com',
[](#%5F%5Fcodelineno-14-6)    idToken,
[](#%5F%5Fcodelineno-14-7)    postLogoutRedirectUrl: 'com.example.app://oauth/logout',
[](#%5F%5Fcodelineno-14-8)  });
[](#%5F%5Fcodelineno-14-9)};
`

## Need Help Migrating?[¶](#need-help-migrating "Permanent link")

If you'd rather not handle the migration yourself, the Capawesome team can take care of it for you. Whether you're dealing with a straightforward auth setup or a more complex multi-provider configuration, we offer dedicated migration services to get you up and running with minimal downtime and effort on your end.

[Book a Free Consultation](https://cal.com/team/capawesome/ionic-appflow-migration)

## Conclusion[¶](#conclusion "Permanent link")

The discontinuation of Ionic Auth Connect doesn't have to leave your app without a solid authentication solution. The Capawesome [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/) provides a comprehensive alternative that covers the core OAuth 2.0 and OpenID Connect functionality you need — with PKCE, automatic discovery, token refresh, and multi-provider support across all platforms.

The migration is straightforward, and the plugin's clean API makes it easy to integrate into existing projects. Combined with the [Capacitor Secure Preferences plugin](/docs/sdks/capacitor/secure-preferences/) for encrypted token storage, you get a complete authentication solution that's actively maintained and stays current with the latest Capacitor versions.

To stay updated with the latest updates, features, and news about Capawesome, Capacitor, and Ionic ecosystem, subscribe to the [Capawesome newsletter](/newsletter/) and follow us on [X (formerly Twitter)](https://x.com/capawesomeio).

If you need assistance with migrating from Ionic Auth Connect or implementing the [Capacitor OAuth plugin](/docs/sdks/capacitor/oauth/), the Capawesome team is available to help you transition smoothly to this reliable alternative. Just [contact us](mailto:support@capawesome.io) to get started.

June 8, 2026 

 Back to top 