Referring to this explainer(https://github.com/w3c/webauthn/wiki/Explainer:-Conditional-Registration-Extension) for enabling passkey automatic upgrades. As per the explainer wiki, the credential manager's GET API needs a flag "conditionalCreate: true" before invoking the create API with "mediation: conditional". There is an assumption here that the password autofill needs to be completed as part of the GET API call and only then the passkey automatic upgrades are enabled via conditional mediation in the create API call. Are these assumptions correct?
If the previously stated assumptions are correct would automatic passkey upgrades work in native iOS applications if I use the native credential manager APIs for GET and the web based credential manager API for CREATE? (The sign-in pages are opened in a web view for native application)
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
91 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Hello, I would like to know how I recreate the data that was signed by the private key during assertion flow.
I read on various sources that my code should get the 37 bytes of authenticator data, append the SHA-256 hash of clientDataJSON string to the end and verify that data given the signature and the public key! But it doesn't seem to work.
I have opened a StackOverflow issue to it where I've provided broader details: https://stackoverflow.com/q/78819955/26530591
Is it possible to have device bound passkeys on ios and iPadOS?
Hello all - we have enabled our app users to create and sign in using their passkey. However - for some users, we get a NSLocalizedFailure reason exception that the app is not associated with the domain.
We have ensured that the endpoint /.well-known/apple-app-site-association isnt blocking any requests.
Like I said before, 90% of our users are able to successfully create and sign in with their passkey but we receive the above error for the remaining 10%.
Any suggestions/guidance on how we can resolve this would be helpful and greatly appreciated. Thank you.
"ASCredentialProviderViewController" class was implemented in my password manager to autofill password for the app clients.
I've added passkey support recently but biometric/code authentication is not asked by the system when the user tries to sign in with a passkey thanks to "provideCredentialWithoutUserInteraction(for credentialRequest: ASCredentialRequest)".
For passwords:
extensionContext.completeRequest(withSelectedCredential: ASPasswordCredential(), completionHandler: nil)
-> Does trigger biometric/code authentication
For passkeys:
extensionContext.completeAssertionRequest(using: ASPasskeyAssertionCredential())
-> Does NOT trigger biometric/code authentication
=> Why authentication is managed by the system for password but not for passkeys ? And how to fix that?
Hello,
Is it correct that right now when any passkey-provider prepares the passkey registration ceremony response with attestation, iOS strips off the attestation before handing over response-assertion to the client.
Does this stripping off of attestation have to do anything with the BS and BE flags that are populated by passkey-provider ? Meaning, is it correct statement that iOS removes the attestation blob from the response if the BE and BS flags are set to zero ??
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.
I am implementing passkeys for my Project. We hosted apple-app-site-association file in 2 different sites for my project maintenance. One is with ww.sitename.com and another is www3.sitename.com.
In Xcode adding each of them and testing individually. It's working good at first site and throwing error for second one like below
Application with identifier <> is not associated with domain <>
Hi Apple Developer Community,
I'm encountering a persistent issue with Passkey registration on certain iOS devices running iOS 17.5.1. Specifically, the registration process consistently fails with either ASAuthorizationError 1001 (ASAuthorizationErrorCanceled) or ASAuthorizationError 1004 (ASAuthorizationErrorNotHandled).
Details:
Devices: iPhone SE (2nd generation), iPhone 13 Pro
OS: iOS 17.5.1
Errors: ASAuthorizationError 1001, ASAuthorizationError 1004
I've followed Apple's guidelines for implementing Passkeys and verified that the devices meet the necessary requirements
PS:
During Apple's App Review process, the reviewer has encountered a consistent issue with Passkey registration failing with ASAuthorizationError 1001 or 1004. However, in our extensive internal testing with 75 users, we have not been able to replicate this issue
We are seeking assistance from the Apple Review team to investigate the cause of this issue, as it is currently blocking our app's approval
I see that on some sites (possibly many) the passkeys verification freezes when devtools are opening.
I tried to debug and see that it hangs in navigator.credentials.get.
STR:
Go to https://passkeys-demo.appspot.com/
Enter random username and click Next
Enter password and click Next
Create a Passkey.
Sign out.
Select USE ONE BUTTON SIGN-IN INSTEAD
Open dev tools.
Try to Sign in with passkey.
Expected result:
User successfully logged in - technically navigator.credentials.get returns credentials.
Actual Result:
navigator.credentials.get stucks in infinite loading and nothing happened - no any errors.
My assertion options looks like:
{
"challenge": "K8WztCaAZM5-ST7r198F6UD4iLZ09IINHSiDJBgHHq4",
"allowCredentials": [],
"timeout": 60000,
"userVerification": "preferred",
"rpId": "passkeys-demo.appspot.com"
}
In source code on this demo site the code
options.allowCredentials = []; <---- breakpoint hit here
// Invoke WebAuthn get
const cred = await navigator.credentials.get({
publicKey: options,
// Request a conditional UI
mediation: conditional ? 'conditional' : 'optional'
});
const credential = {}; <---- breakpoint NOT hit here (after removing breakpoint above and after macOS touch ID is completed)
My team is very interested in integrating the new automatic passkey upgrade functionality into our app. Our app does not currently use passwords, but instead to log in utilizes phone number and SMS code verification (along with email code verification if the device is unknown). While watching the session on automatic passkey upgrades, it is noted that the system/credential manager checks to ensure that a password was just autofilled for the same account before allowing an automatic passkey upgrade. Since our app does not use passwords, does this mean we are ineligible for taking advantage of automatic passkey upgrades? Or, is there something else we can do to ensure the upgrade goes through?
Hello, I have a fully functional webauthn relying party that uses passkeys and I am trying to implement an iOS sdk for it. On the server, the AASA file is valid and well served at /.well-known/assetlinks.json. I verified its validity with branch.io and that it is indeed cached by Apple's CDN (https://app-site-association.cdn-apple.com/a/v1/service.domain.com), but even will all these I still get the following error when installing the app on a device and starting the passkey ceremony:
Passkey authorization failed. Error: The operation couldn’t be completed. Application with identifier TEAM.com.APP is not associated with domain service.domain.com
So I then checked the system log when installing the app on my iPhone, and under the swcd process (which is apparently responsible of fetching the AASA file) I found the following error:
swcd: Domain is invalid. Will not attempt a download.
The issue that I have is that my domain is actually an IDN, it has a special character in it. But everywhere I have used it, I converted it to ASCII (punycode). With this conversion, Apple's CDN is able to fetch the AASA file, and the passkey ceremony works fine on a browser.
So I don't understand how the device (both iPhone or Mac) finds this domain to be invalid? In the app's entitlements, I added the capability for an associated domain, with webcredentials:service.domain.com with the domain name converted to ASCII (punycode) and developer mode doesn't address this issue as it appears when the app is installed (and is not related to Apple's CDN).
The last thing I tried was to add the domain with special characters in the app's entitlements (for webcredentials:) but then Xcode was unable to install the app on the device, and gave the following error:
Failed to verify code signature (A valid provisioning profile for this executable was not found.)
which happened only with a special character in the domain in the app's entitlements.
All this leaves me kind of in a dead end, I understand Xcode or iOS/macOS has a hard time with IDNs and special characters (so do I), but I have no idea on how to solve this (without changing the domain name), so I would really appreciate any help. Thanks in advance.
PS: I tested all this previously with another domain without special characters and it was working. It also had dashes ('-') in it and the new domain converted to ASCII is basically a regular domain with '-' in it so I suppose there is some kind of conversion made from ASCII back to special characters and that then, the domain is considered as invalid, but this doesn't really help me a lot...
PS2: My devices are running on iOS 17.4.1 and macOS 14.4.1 with Xcode 15.2
~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.
My team is currently working on implementing passkeys and wanted to better understand the various errors that can be thrown both when creating and logging in with a passkey. To my understanding, after invoking the passkey request via the authorization controller, if an error occurs, the authorizationController(controller:didCompleteWithError:) delegate method will be called. The error will be a ASAuthorizationError, and there are a few codes listed here. The docs are a bit vague about when each of these errors can occur and what the difference is between them, so I am posting this in the hopes of gaining more clarity. The errors for which we'd like some clarification are:
failed
This is pretty generic, how might this code be different than the other failure reasons, and what could cause it to be thrown either for creation or for authorization?
invalidResponse
Does this mean that the system received an invalid response from the Relying Party?
notHandled
What might cause the authorization request not to be handled?
notInteractive
What does it mean for the authorization request to not be interactive? Does this mean that none of the specified credentialIDs are available?
Finally, is it possible for both creation and authorization to throw all of these errors, or are there some that are exclusive?
Any help would be appreciated, thank you.
I have two AppleID's. I use one with my Apple developer account and the other is my primary AppleID that I mainly use for everything else. In the past, I have used them on separate MacBooks, but I am now trying to consolidate everything onto one MacBook.
I have created a Passkey for my Apple.com store account and that works well. However, when I try to log into an Apple developer related site (e.g. developer.apple.com), it initially offers to use my personal Passkey with an option to use different AppleID. When I select "use a different AppleID" and select my developer AppleID, it only offers to allow me to log in with a password or with a QR code using a Passkey on a different device.
Is it possible to set up a Passkey for my Apple developer account on the same MacBook that already has a Passkey set up for my Apple Store account? If so, what is the process to create it? If it helps, both of my AppleID's are members of the same Family.
Thanks.
I have two AppleID's. I use one with my Apple Developer account and the other is my primary AppleID that I mainly use for everything else. In the past, I have used them on separate MacBooks, but I am now trying to consolidate everything onto one MacBook.
I have created a Passkey for my Apple.com store account and that works well. However, when I try to log into an Apple developer related site (e.g. developer.apple.com), it initially offers to use my personal Passkey with an option to use a different AppleID. When I select "use a different AppleID" and select my developer AppleID, it only allows me to log in with a password or with a QR code using a Passkey on a different device.
Is it possible to set up a Passkey for my Apple developer account on the same MacBook that already has a passkey set up for my Apple store account? If so, what is the process to create it. If it helps, both of my AppleID's are members of the same Family.
Thanks.
I am a simple mac seller ,i buy broken laptops from people and repair them to sell
so one day one my customer asked to show him video of 4 my laptops
after he got only video all became iCloud LOCK
Summary - my case numbers are 102302104385 + Case Number: 102309395011
my story is simple
the customer asked me about video of the Macbook , because as he told me , he was need a confirmation about how are laptops are looks like
i do not see any suspicious action here , customer just want me to show him the laptop like online
So i did it - just send him video - and that is all
then he asked to send video about 3 more Macbooks
after it he asked me to Use Erase All Content and Settings
so i was sure that there will be no problem - because i just replaced the motherboard two weeks ago - so what can be wrong
so when i did it - the Macbook asked if the apple server let him activation and it was refused
Somehow person who get the video about laptop did a copy of a signal that apple laptop send to apple activation server and connected it to his apple id and after it enabled FMI FMD - but all time my laptops was turned off
But i have video confirmation in my cases that all laptops are without any Apple Id and have new and fresh mac os
so after it i was not able to pass the activation because i was scammed and unknown person connected 4 my laptops to unknown account , so after that i was not able to pass the activation
so in fact they are all bricked now
he asked me to pay 1000 $
i told apple about it and they answer me that it is just my fairy tail and it is not possible
i told them that there is a hole in security and identification of apple devices during enabling FMI FMD but as i see they do not care - i think it must about 100 same cases or 1000 - maybe after it they will take care about it
so now i wonder if there any more victims who have the same problem ?
or check here at youtube ServisTT
also i and apple support did full apple diagnostic about all devices - i want apple to compare mac addresses and other mac information with the signal that was emulated with the scammer to prove my words - because the scammer was at different location and his emulation device or software was different between my original one macbook
Steps to reproduce
https://www.youtube.com/watch?v=58AgEcZvrYg&t=98s or check here at youtube ServisTT
Expected results
i want apple to compare mac addresses and other mac information with the signal that was emulated with the scammer to prove my words - because the scammer was at different location and his emulation device was different between my original one
also if you find out that he used Hardware UUID - so why not to mask it or hide or make enable to see only with the password
Actual results
NO ONE TRUST ME AND NO ONE WANT TO HELP ME
I did implement "ASCredentialProviderViewController" class for my password manager in order to support passkey recently. Passkey registration and assertion works correctly but remote fullfilling is not working as expected.
Use case:
The user wants to sign in with passkey on some computer
A QRCode is displayed and the user scan the QRCode
Apple Authentication bottom sheet is opened and the client can pick my app as a provider
ISSUE HERE: my app doesn't receive the passkey request parameters and is not able to generate the assertion answer
I was hoping the following functions to be called but it's not the case:
prepareCredentialList(for serviceIdentifiers: [ASCredentialServiceIdentifier], requestParameters: ASPasskeyCredentialRequestParameters)
prepareInterfaceToProvideCredential(for credentialRequest: ASCredentialRequest)
provideCredentialWithoutUserInteraction(for credentialRequest: ASCredentialRequest)
=> Please, how can my app receive the passkey request parameters in order to generate the assertion answer in this situation?
We implemented passkeys Autofill feature in iOS 16.6. Later verified in iOS 17.0 as well. But when we upgraded to iOS 17.5, the available passkeys autofill prompt is disappeared now. No code changes were done from our side. Also upgraded to iOS 17.5.1 and checked, still doesn’t show the prompt on the keyboard.
For autofill we are calling 'performAutoFillAssistedRequests()' API on our ASAuthorizationController after fetching assertion options response from our Relying-Party. Our textFields content type is set to ‘username’.
Additional Info:
Before making the performAutoFillAssistedRequests() API call, when we click on the ‘Passwords’ icon on keyboard, it only shows the passwords saved on iPhone. But after making the call, we can see available passkeys as well in the list.
We are making the fetch assertion options response call on textField delegate after typing more than two characters.
I already raised a bug in Feedback Assistant on this - FB13809196. I attached a video and sysdiag file there.
Hello,
I run a website that's using FIDO for user logins. A lot of our users set up their device-bound passkeys back when they were on iOS 15. Now that they're moving to iOS 16, I'm trying to figure out what happens with those passkeys.
Here's my question: When these users upgrade to iOS 16 and start using other devices, how does iOS handle their existing passkeys? Do they see both the old device-bound and the new synced passkeys in the UI, or does it somehow merge them? This might not be an issue in the latest iOS 17, but I'm interested in knowing if it could occur in earlier versions like iOS 16.
I'm aiming to make this transition to synced passkeys as smooth as possible for my users and just want to make sure I understand the UX changes that come with iOS 16.
Thanks!