hello im using the new IOS 26 api for passkey creation ASAuthorizationAccountCreationProvider
however it only seems to work with apple's Passwords app. Selecting 3rd party password apps (1Password, google chrome, etc) does not create the passkey.
The sign up sheet gives me the option to save in 3rd party apps, but when I select a 3rd party app, I just get the ASAuthorizationError cancelled error? So I dont even know what the problem is?
When selecting "Save in Passwords(apple's app)" during the sign up it works fine
Has anyone else run into this issue? Is there something I need to do enable 3rd party apps?
Passkeys in iCloud Keychain
RSS for tagUse public-key-based credentials using the WebAuthn standard that are synced with iCloud Keychain.
Posts under Passkeys in iCloud Keychain tag
57 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
When using iCloud Keychain passkeys with WebAuthn (mediation: "conditional") in non-Safari browsers (e.g. Chrome or WKWebView-based browsers), Face ID / Touch ID is requested twice during Passkey Autofill.
This issue occurs only when the focused input field shows a numeric keypad–style keyboard, such as:
Japanese Kana
Chinese Zhuyin
With a standard QWERTY keyboard, authentication completes with a single user verification.
Notably:
Safari completes authentication with one Face ID / Touch ID prompt even with numeric keypad keyboards.
Other browsers require two prompts.
The issue does not occur with other credential managers (Google Password Manager, 1Password), suggesting this is specific to iCloud Keychain.
This issue has been confirmed on the following OS versions:
iOS 17.6.1
iOS 18.7.2
iOS 26.2
iOS 26.3 beta
Impact
This behavior results in a confusing and unintuitive login experience for users relying on Passkey Autofill.
Steps to Reproduce:
Go to Settings → Keyboards → Keyboards, and set “Japanese – Kana” as the primary keyboard.
Enable Face ID / Touch ID, and make sure “Use Face ID / Touch ID For” → “Password Autofill” is enabled.
Open Chrome and navigate to https://webauthn.io.
Enter a username and tap “Register” to create a passkey using iCloud Keychain.
Tap the username field again so that the “Japanese – Kana” keyboard appears and the passkey suggestion created in step 4 is shown.
Tap the passkey suggestion.
Face ID / Touch ID is requested twice.
===
This issue has already been reported via Feedback Assistant as FB21726047. I am posting here to confirm whether this behavior is working as intended or represents a bug, and to make other developers aware of the current behavior.
aID is an ID service for 150+ newspaper sites in Norway. Since the middle of January the average login time with passkeys on our site https://www.aid.no/ has increased for Safari users, the number of logins using passkey in Safari has decreased dramatically.
Previously Safari was the browser that provided the best user experience during login, since it triggered fingerprint reader straight away, but this behavior has vanished. Has something changed that we should be aware of, and is there something we can do to make conditional get great again?
Without mediation conditional, the passkeys work as expected. In Chrome and Firefox, we get passkey suggestions in the username field, in Safari it's only password suggestions.
To make things even stranger, the same code works as it used to in our test environment. It triggers a small popup by the username field and activates the fingerprint reader. If I cancel this, I can click on the Passwords icon and get passkey suggestion there.
There appears to be a regression or restriction in iOS 26.2 and 26.2.1 regarding the Web Authentication API in third-party browsers (browsers other than Safari).
Specifically, the method PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() returns false when called from within non-Safari browsers (e.g., Chrome, Firefox, Edge) on iOS, even when the device supports biometrics (FaceID/TouchID) and Passkeys are enabled.
This prevents third-party browsers from correctly detecting Platform Authenticator availability, leading websites to hide Passkey login options or default to cross-device authentication flows instead of using the local device's biometric authenticator.
Environment:
OS: iOS 26.2, iOS 26.2.1
Device: iPhone 17
Browsers Tested: Chrome iOS and Firefox iOS
Steps to Reproduce:
Launch Safari on an iOS device running iOS 26.2+.
Navigate to https://www.passkeys-debugger.io/.
Observe that "Platform Auth" is highlighted in Green (true), indicating the device is eligible for passkey authentication.
Launch a non-Safari browser (e.g., Chrome or Firefox) on the same device.
Navigate to https://www.passkeys-debugger.io/.
Expected Results:
"Platform Auth" should be Green (true), matching the behavior in Safari, as the device possesses a built-in platform authenticator.
Actual Results:
"Platform Auth" is highlighted in Red (false).
Impact:
This discrepancy fragments the Passkey user experience on iOS. Users preferring third-party browsers are unable to utilize the seamless on-device biometric authentication that is available in Safari. It forces developers to implement complex fallbacks or results in users believing their device is incompatible with Passkeys.
In these threads, it was clarified that Credential Provider Extensions must set both Backup Eligible (BE) and Backup State (BS) flags to 1 in authenticator data:
https://developer.apple.com/forums/thread/745605
https://developer.apple.com/forums/thread/787629
However, I'm developing a passkey manager that intentionally stores credentials only on the local device. My implementation uses:
kSecAttrAccessibleWhenUnlockedThisDeviceOnly for keychain items
kSecAttrTokenIDSecureEnclave for private keys
No iCloud sync or backup
These credentials are, by definition, single-device credentials. According to the WebAuthn specification, they should be represented with BE=0, BS=0.
Currently, I'm forced to set BE=1, BS=1 to make the extension work, which misrepresents the actual backup status to relying parties. This is problematic because:
Servers using BE/BS flags for security policies will incorrectly classify these as synced passkeys
Users who specifically want device-bound credentials for higher security cannot get accurate flag representation
Request: Please allow Credential Provider Extensions to return credentials with BE=0, BS=0 for legitimate device-bound passkey implementations.
Environment: macOS 26.2 (25C56), Xcode 26.2 (17C52)
Topic:
Privacy & Security
SubTopic:
General
Tags:
Extensions
macOS
Authentication Services
Passkeys in iCloud Keychain
Hi,
I'm using webauthn.io to test my macOS Passkey application. When registering a passkey whichever value I set for User Verification, that's what I get when I check registrationRequest.userVerificationPreference on prepareInterface(forPasskeyRegistration registrationRequest: any ASCredentialRequest).
However, when authenticating my passkey I can never get discouraged UV on prepareInterfaceToProvideCredential(for credentialRequest: any ASCredentialRequest).
In the WWDC 2022 Meet Passkeys video, it is stated that Apple will always require UV when biometrics are available. I use a Macbook Pro with TouchID, but if I'm working with my lid closed, shouldn't I be able to get .discouraged?
Topic:
Privacy & Security
SubTopic:
General
Tags:
Authentication Services
Passkeys in iCloud Keychain
When using passkeys stored in iCloud Keychain (Passwords app) via Passkey Autofill in browsers other than Safari, the userVerification parameter is ignored and user verification (UV) is not performed.
As a result, relying party servers that require userVerification = required fail validation because the UV flag is not set, causing passkey authentication to fail.
This issue occurs when the following setting is disabled:
Settings → Face ID & Passcode → Use Face ID For → Password AutoFill
The issue is reproducible only with the following combination:
Non-Safari browsers (e.g. Chrome)
Passkeys stored in iCloud Keychain (Passwords app)
Passkey Autofill
The issue does not occur in the following cases:
Safari with passkeys stored in any credential manager
Non-Safari browsers using credential managers other than iCloud Keychain
Steps to Reproduce:
Go to Settings → General → Autofill & Passwords, and enable the Passwords app under “Autofill From”.
Go to Settings → Face ID & Passcode → Use Face ID For, and disable “Password AutoFill”.
Open Chrome and navigate to https://webauthn.io
Enter a username and tap “Register” to create a passkey using the Passwords app (iCloud Keychain).
On webauthn.io, go to Advanced Settings → Authentication Settings, and set “User Verification” to “Required”.
Reload the page, tap the input field, and perform Passkey Autofill.
User Verification is not triggered, and “Authentication failed” is displayed on webauthn.io.
===
This issue has already been reported via Feedback Assistant as FB21756948.
I am posting here to confirm whether this behavior is working as intended or represents a bug, and to make other developers aware of the current behavior.
The passkey authentication dialog appears, and after unlocking with Touch ID, the dialog closes without any notification of success or failure.
This issue occurs with high frequency.
access to the https://passkeys-demo.appspot.com/
register account and create passkey.
logoff
access to the url again
you can see the passkey dialog
unlock device then the dialog disappears
nothing happens
reload the page
proceed 5) to 6)
nothing happens or success webauthn.
Topic:
Safari & Web
SubTopic:
General
Tags:
WebKit JS
WebKit
Safari and Web
Passkeys in iCloud Keychain
I’m currently developing an application using WKWebView.
After updating to iOS 26.2 Developer Beta, the following Web API started returning false:
isUserVerifyingPlatformAuthenticatorAvailable
MDN: https://developer.mozilla.org/ja/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable_static
This issue did not occur on iOS 26.1 — it only happens on the beta version.
Has anyone else encountered this problem or is aware of any related changes?
OS: iOS 26.2 beta 3 (23C5044b)
After registe Passkey with webauthn library, i create a passkeyRegistration with follow,
let passkeyRegistration = ASPasskeyRegistrationCredential(relyingParty: serviceIdentifier, clientDataHash: clientDataHashSign, credentialID: credentialId, attestationObject: attestationObject)
and then completeRegistrationRequest like that,
extensionContext.completeRegistrationRequest(using: passkeyRegistration)
But a bad outcome occurred from user agent. NotAllowedError:The request is not allowed by the user agent or the platform in the current context.
And the return data rawID & credentialPublicKey is empty,
Topic:
Privacy & Security
SubTopic:
General
Tags:
Autofill
Authentication Services
Passkeys in iCloud Keychain
We recently upgraded OpenSSL from version 1.1.1 to 3.4.0. After this upgrade, we observed that PKCS#12 files generated using OpenSSL 3.4.0 fail to import into the macOS Keychain with the following error:
Failed to import PKCS#12 data: -25264
(MAC verification failed during PKCS12 import (wrong password?))
This issue is reproducible on macOS 14.8.2. The same PKCS#12 files import successfully on other macOS versions, including 15.x and 26.x.
Additionally, PKCS#12 files that fail to import on macOS 14.8 work correctly when copied and imported on other macOS versions without any errors.
PKCS#12 Creation
The PKCS#12 data is created using the following OpenSSL API:
const char* platformPKCS12SecureKey =
_platformSecureKey.has_value() ? _platformSecureKey.value().c_str() : NULL;
PKCS12* p12 = PKCS12_create(
platformPKCS12SecureKey,
NULL,
keys,
_cert,
NULL,
0, 0, 0, 0, 0
);
if (!p12)
{
throw std::runtime_error("Failed to create PKCS#12 container");
}
PKCS#12 Import
The generated PKCS#12 data is imported into the macOS Keychain using the following code:
NSString *certPassKey = [NSString stringWithUTF8String:getCertPassKey()];
NSDictionary *options = @{
(__bridge id)kSecImportExportPassphrase: certPassKey,
(__bridge id)kSecAttrAccessible:
(__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly,
(__bridge id)kSecAttrIsExtractable: @YES,
(__bridge id)kSecAttrIsPermanent: @YES,
(__bridge id)kSecAttrAccessGroup: APP_GROUP
};
CFArrayRef items = NULL;
OSStatus status = SecPKCS12Import(
(__bridge CFDataRef)pkcs12Data,
(__bridge CFDictionaryRef)options,
&items
);
Topic:
Privacy & Security
SubTopic:
General
Tags:
macOS
Signing Certificates
iCloud Keychain Verification Codes
Passkeys in iCloud Keychain
When logging into appstoreconnect I get the option to use a password or passkey:
Password works fine. However passkey always results in:
This is probably because I don't actually have any passkeys:
So I think what is happening is that Apple thinks I have a passkey, which is why it's offering that as an option. I can't see any option to create a passkey, or regenerate one.
I'm not sure how I've ended up in this state. I have a vague memory that sometime years ago when passkeys were first introduced on appstoreconnect that I tried to create one, but because it wouldn't let me store it in BitWarden, I backed out.
It's not a major problem because I can still log in using password. But I'm worried in case some time in the future passkey becomes the only option.
Does anyone know of any way I can reset or regenerate my passkey for appstoreconnect?
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
Passkeys in iCloud Keychain
Create shortcut to open chrome with url and put it on the desktop.
Tap the shortcut.
Tap the username text field.
When launching Safari from an iOS shortcut on an iOS device with a valid passkey registered, the passkey suggestion does not appear; instead, the password suggestion appears sometimes.
Topic:
Safari & Web
SubTopic:
General
Tags:
WebKit
Safari
Safari and Web
Passkeys in iCloud Keychain
Recently, we have adapted the passkey function on the Mac, but we always encounter the error message "Unable to verify the web credentials association of xxx with domain aaa. Please try again in a few seconds."
We can confirm that https://aaa/.well-known/apple-app-site-association has been configured and is accessible over the public network. Additionally, the entitlements in the app have also been set with webcredentials:aaa.
This feature has been experiencing inconsistent performance. When I restart my computer or reinstall the pkg, this feature may work or it may still not work. I believe this is a system issue.
Here is feed back ID: FB20876945
In the feedback, I provided the relevant logs.
If you have any suggestions or assistance, please contact me. I would be extremely grateful!
Topic:
Privacy & Security
SubTopic:
General
Tags:
macOS
Objective-C
Authentication Services
Passkeys in iCloud Keychain
Hi everyone,
We’re testing the new iOS 26 capability, Performing Fast Account Creation with Passkeys, using the sample project provided here: Performing Fast Account Creation with Passkeys.
When running the project on the iOS 26 simulator and tapping the "Sign Up" button, we encounter the following error:
The operation couldn’t be completed. (com.apple.AuthenticationServices.AuthorizationError error 1010.)
From the header file, this error is described as:
/// ASAuthorizationError.h
/// This error signals that the device is not currently set up to create passkeys.
ASAuthorizationErrorDeviceNotConfiguredForPasskeyCreation AS_API_AVAILABLE(ios(19.0), macos(16.0), visionos(3.0)) = 1010,
We’ve tested this on both Xcode 26 Beta 1 and Beta 2, and the error persists on the simulator in both versions.
However, when testing on a physical iOS 26 device, everything works as expected, just like in the WWDC demo.
Could this issue be related to missing simulator settings? Or is it a potential bug in the simulator? Any advice would be greatly appreciated.
Thanks in advance!
~5% of our users when downloading the iOS application from the Apple Store for the first time are unable to enrol a Passkey and experience an error saying the application is not associated with [DOMAIN].
The error message thrown by the iOS credentials API is
"The operation couldn't be completed. Application with identifier [APPID] is not associated with domain [DOMAIN]"
We have raised this via the developer support portal with case id: 102315543678
Question:
Why does the AASA file fail to fetch on app install and is there anything that can be done to force the app to fetch the file?
Can this bug be looked at urgently as it is impacting security critical functionality?
Other Debugging Observations
We have confirmed that our AASA file is correctly formatted and hosted on the Apple CDN. Under normal circumstances the association is created on install and Passkey enrolment works as intended.
We have observed that when customers uninstall/reinstall the app this often, but not always, resolves the issue. We also know this issue can resolve itself overtime without any intervention.
We have ruled out network (e.g VPN) issues and have reproduced the issue across a number of different network configurations.
We have ruled out the Keychain provider and have reproduced it across a variety of different providers and combinations of.
We observed this across multiple versions of the iOS operating system and iPhone hardware including the latest hardware and iOS version.
Hi! Is it possible to disable the option for users to 'Sign in with Another Device'? I encounter this message during the authentication process and I want to prevent it from appearing. I appreciate your help and look forward to your response.
Hello, I am currently implementing a biometric authentication registration flow using WebAuthn. I am using ASAuthorizationPlatformPublicKeyCredentialRegistrationRequest, and I would like to know if there is a way to hide the "Save to another device" option that appears during the registration process.
Specifically, I want to guide users to save the passkey only locally on their device, without prompting them to save it to iCloud Keychain or another device.
If there is a way to hide this option or if there is a recommended approach to achieve this, I would greatly appreciate your guidance.
Also, if this is not possible due to iOS version or API limitations, I would be grateful if you could share any best practices for limiting user options in this scenario.
If anyone has experienced a similar issue, your advice would be very helpful. Thank you in advance.
I'm working on integrating Passkey functionality into my iOS app (targeting iOS 16.0+), and I'm facing an issue where the system dialog still shows the "Save to another device" option during Passkey registration. I want to hide this option to force users to create Passkeys only on the current device.
1. My Current Registration Implementation
Here’s the code I’m using to create a Passkey registration request. I’ve tried to use ASAuthorizationPlatformPublicKeyCredentialProvider (which is supposed to target platform authenticators like Face ID/Touch ID), but the "Save to another device" option still appears:
`// Initialize provider for platform authenticators
let provider = ASAuthorizationPlatformPublicKeyCredentialProvider(relyingPartyIdentifier: domain)
// Create registration request
let registrationRequest = provider.createCredentialRegistrationRequest(
challenge: challenge,
name: username,
userID: userId
)
// Optional configurations (tried these but no effect on "another device" option)
registrationRequest.displayName = "Test Device"
registrationRequest.userVerificationPreference = .required
registrationRequest.attestationPreference = .none
// Set up authorization controller
let authController = ASAuthorizationController(authorizationRequests: [registrationRequest])
let delegate = PasskeyRegistrationDelegate(completion: completion)
authController.delegate = delegate
// Trigger the registration flow
authController.performRequests(options: .preferImmediatelyAvailableCredentials)`
2. Observation from Authentication Flow (Working as Expected)
During the Passkey authentication flow (not registration), I can successfully hide the "Use another device" option by specifying allowedCredentials in the ASAuthorizationPlatformPublicKeyCredentialAssertionRequest. Here’s a simplified example of that working code:
let assertionRequest = provider.createCredentialAssertionRequest(challenge: challenge)
assertionRequest.allowedCredentials = allowedCredentials
After adding allowedCredentials, the system dialog no longer shows cross-device options—this is exactly the behavior I want for registration.
3. My Questions
Is there a similar parameter to allowedCredentials (from authentication) that I can use during registration to hide the "Save to another device" option?
Did I miss any configuration in the registration request (e.g., authenticatorAttachment or other properties) that forces the flow to use only the current device’s platform authenticator?
Are there any system-level constraints or WebAuthn standards I’m overlooking that cause the "Save to another device" option to persist during registration?
Any insights or code examples would be greatly appreciated!
I've come across strange behavior with the userID property on the returned credential from a passkey attestation.
When performing a cross-device passkey assertion between iOS and Android by scanning the generated QR code on my iPhone with an Android device the returned credential object contains an empty userID.
This does not happen when performing an on device or cross-device assertion using two iPhones.
Is this expected behavior, or is there something I'm missing here? I couldn't find any more information on this in the documentation.
iOS Version: 26.0.1, Android Version: 13
Topic:
Privacy & Security
SubTopic:
General
Tags:
Passkeys in iCloud Keychain
Authentication Services