{"id":10824,"date":"2026-05-21T01:30:30","date_gmt":"2026-05-20T17:30:30","guid":{"rendered":"https:\/\/aeosub.com\/keyless-login\/"},"modified":"2026-05-21T01:30:30","modified_gmt":"2026-05-20T17:30:30","slug":"keyless-login","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/keyless-login\/","title":{"rendered":"Keyless Login"},"content":{"rendered":"<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/keyless-login.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/susheelhbti\/\" target=\"_blank\" rel=\"noopener\">susheelhbti<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.0.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.4 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-20 4:54pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/keyless-login\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Passwordless WebAuthn\/FIDO2 login for WordPress. 100% pure PHP, zero external dependencies.<\/div>\n<p><strong>Keyless Login<\/strong> brings modern, phishing-resistant authentication to your WordPress site.<\/p>\n<p>Log in with your fingerprint, face, or a hardware security key \u2014 no password ever required or transmitted. Implemented entirely in pure PHP using only the built-in <code>openssl<\/code> extension. No Composer, no vendor folder, no third-party libraries.<\/p>\n<h4>How It Works<\/h4>\n<p>KeylessWP implements the <a href=\"https:\/\/www.w3.org\/TR\/webauthn-2\/\" rel=\"nofollow ugc noopener\" target=\"_blank\">W3C WebAuthn Level 2<\/a> specification from scratch:<\/p>\n<ul>\n<li>A custom CBOR decoder parses authenticator data<\/li>\n<li>Custom ASN.1\/DER builders construct public keys<\/li>\n<li>PHP&#8217;s built-in <code>openssl_verify()<\/code> verifies ECDSA P-256 (ES256) and RSA-2048 (RS256) signatures<\/li>\n<li>Credentials are stored in a dedicated database table with sign-count clone detection<\/li>\n<\/ul>\n<h4>Supported Authentication Methods<\/h4>\n<ul>\n<li>\ud83d\udd90 Fingerprint sensors (Touch ID, Windows Hello)<\/li>\n<li>\ud83d\ude0a Face recognition (Face ID, Windows Hello face camera)<\/li>\n<li>\ud83d\udd11 Hardware security keys (YubiKey, Google Titan Key, Feitian)<\/li>\n<li>\ud83d\udd10 Platform passkey managers (iCloud Keychain, Google Password Manager)<\/li>\n<\/ul>\n<h4>Features<\/h4>\n<ul>\n<li>Full FIDO2 \/ WebAuthn Level 2 implementation \u2014 pure PHP<\/li>\n<li>ECDSA P-256 (ES256) and RSA-2048 (RS256) signature verification<\/li>\n<li>Zero external libraries \u2014 only PHP&#8217;s built-in <code>openssl<\/code> extension required<\/li>\n<li>Passkey registration and management from the user profile page<\/li>\n<li>Per-credential device naming, creation date, and last-used tracking<\/li>\n<li>Sign-count verification on every authentication (clone detection)<\/li>\n<li>Phishing-resistant: credentials are cryptographically bound to your domain<\/li>\n<li>Admin settings page with live usage statistics<\/li>\n<li>Graceful fallback: the standard password form remains available<\/li>\n<li>Translatable \u2014 all strings use <code>__()<\/code> with the <code>keylesswp<\/code> text domain<\/li>\n<\/ul>\n<h4>Privacy<\/h4>\n<p>KeylessWP does not collect, transmit, or share any user data. No external services are contacted. Biometric data never leaves the user&#8217;s device \u2014 only a cryptographic public key is stored on the server.<\/p>","protected":false},"excerpt":{"rendered":"<p>Passwordless WebAuthn\/FIDO2 login for WordPress. 100% pure PHP, zero external dependencies.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[1545,1546,1547,664,1548,555],"class_list":["post-10824","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-fido2","tag-passkey","tag-passwordless","tag-security","tag-webauthn","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10824"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10824\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}