About this plugin
Adds a Sign in with QRAuth button to your WordPress login page. Visitors press it, confirm it is them on QRAuth, and come straight back signed in. On a computer they scan a code with their phone’s camera.
On a phone they confirm on the phone itself, with no code to scan. QRAuth handles Google, GitHub, Microsoft and Apple sign-in for you, so you never register an OAuth app with any of them.
Five-minute setup. Create a free QRAuth account, add your website in the QRAuth dashboard, and paste the Client ID and Client Secret into Settings → QRAuth. The settings page walks you through each step and shows the exact address to copy.
Built on OpenID Connect. Sign in with QRAuth uses the authorization code flow with PKCE, a one-time state bound to the visitor’s browser, and a nonce. WordPress checks the ID token’s signature against QRAuth’s published keys before anyone is signed in.
The QRAuth sign-in service is OpenID Certified.
Account safety is the default.
- Only people who already have a WordPress account can sign in, matched on an email address QRAuth has verified. Turn on account creation if you want open registration.
- New accounts are always created as Subscriber, at every layer (settings, sanitiser, runtime). Change a role by hand under Users → All Users if needed.
- Administrators and Editors are never matched by email. They link their account once from their own profile page while signed in with their password.
- The plugin never redirects outside your site and never touches your user table on uninstall.
php, the registration form, WooCommerce My Account and checkout, and any page via the [qrauth_login] shortcode.
Older sites: embedded widget. Sites set up before Sign in with QRAuth existed can keep using the embedded QR widget. It is used only while no Sign in with QRAuth client is configured, and switching over keeps every linked account.
Open source build. com/qrauth-io/qrauth/tree/main/packages/web-components. The unminified source files are also vendored alongside the minified bundle inside this plugin ( assets/js/source/ ) for offline review.
See the Source section below for build instructions.
External services
io) — the identity verification service that performs the actual passwordless / social sign-in. QRAuth is operated by ProgressNet, the publisher of this plugin. Without QRAuth there is no widget and no sign-in.
What the service is and what it is used for
QRAuth verifies that the user who scanned the QR code (or completed a social-provider flow on the hosted approval page) is the same person who initiated the sign-in on your WordPress site, then returns a signed assertion that the plugin uses to set the WordPress auth cookie.
What data is sent and when
- Auth-session creation — when a visitor opens a page that hosts the widget (wp-login.php, the registration form, a shortcode-enabled page, or a WooCommerce sign-in form), the plugin’s same-origin REST proxy sends your Client ID, Client Secret (server-side only — never exposed to the browser), and the host page URL to https://qrauth.io/api/v1/auth-sessions. No visitor data is included in this request.
- Sign-in verification — when the visitor approves the sign-in (by scanning the QR code with their phone or completing a social-provider flow on QRAuth’s hosted approval page), the plugin’s REST proxy fetches the verified result from https://qrauth.io/api/v1/auth-sessions/verify-result. The response carries the QRAuth user identifier and, when the email scope is allowed in Settings → QRAuth, the user’s email address. The plugin uses this only to locate or create the matching WordPress user; nothing beyond a hashed link reference is retained.
-
io/a/<token> to complete the social-provider flow. This is a standard cross-domain navigation initiated by the visitor.
-
io/authorize with your OIDC Client ID, the redirect URI, and one-time state, nonce and PKCE values; the visitor signs in on QRAuth’s pages and is redirected back. json, nothing sent), the token endpoint ( /token: your OIDC Client ID and Client Secret, the one-time authorization code and PKCE verifier), and the userinfo endpoint ( /userinfo: the access token). The responses carry a site-specific QRAuth user identifier and, with the visitor’s consent, their name and email address and whether QRAuth has verified it.
The plugin uses these only to sign the visitor in to the matching WordPress account. The OIDC Client Secret is stored in your site’s options table, like the widget’s Client Secret, and is never sent to the browser.
io directly from the browser; all server-to-server calls are proxied via your site’s REST API.
Service terms and policies
- Terms of Service: https://qrauth.io/terms
- Privacy Policy: https://qrauth.io/privacy
- Data Processing Addendum: https://qrauth.io/dpa
- List of Sub-processors: https://qrauth.io/subprocessors
Source
js carries the following banner header at the top of the file:
/*! 2 * Vendored by qrauth-passwordless-social-login. Do not edit by hand.
md for provenance. */
The unminified TypeScript source files are also vendored alongside the compiled bundle inside this plugin ( assets/js/source/ ) for offline review.
0-or-later at:
- Plugin source repository: https://github.com/qrauth-io/qrauth-passwordless-social-login
js shipped in the plugin ZIP are non-minified — read them directly without checking out the repo.
js is a pinned production build of the public @qrauth/web-components library. The non-compiled source for that library is openly available:
- Source repository: https://github.com/qrauth-io/qrauth/tree/main/packages/web-components (MIT-licensed)
- npm release: https://www.npmjs.com/package/@qrauth/web-components — pinned to v0.4.2, sha512 in package.json under the qrauth.webComponentsIntegrity key
- Build instructions for the upstream library: https://github.com/qrauth-io/qrauth/blob/main/BUILDING.md
To regenerate the vendored bundle from the pinned npm release, clone the plugin source repository linked above and run from its root:
npm install npm run build:assets
js. org plugin-check job, so the bundle distributed on the directory always matches the published npm release. md in the upstream library repository above.