Replies: 3 comments 2 replies
|
One option worth exploring for the app/domain validation is using However, this might not be a good fit for ordinary passkey login. A passkey scoped to |
|
Something that's come up when discussing this for other apps is where Google are going to draw the line on "configuration" vs "sign-in". HA allows a user to configure connections to multiple servers (as an app I work on does as well): in this sort of world, the servers can be running different versions of the same product or might be completely different products that just adhere to the same API. Additionally, different devices with the same Play Store account might not actually be intended to have the same set of servers configured. Add to this the fact that It to me seems like Google should make a distinction for apps where I "sign in as me" and ones where you configure it to connect to servers/services. Whether that will happen or not is unclear though, and I don't personally feel optimistic about it 🤷♂️. |
|
I cross-posted this topic on multiple open source project with Android apps to see how they are going to handle this new requirements too
And also on Reddit |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Google has announced that apps supporting user sign-in must support zero-tap sign-in restoration from April 2027 https://support.google.com/googleplay/android-developer/answer/17492799?#zero-tap_sign-in_restoration. This requirement applies to mobile and tablet apps distributed through Google Play that support login, whether optional or mandatory.
They are clear about what happens if we don’t meet the requirements:
Caution
All of the requirements posted in this page are not optional. Not meeting a requirement can affect an app’s visibility and publishing capabilities on Google Play.
For now, they haven’t announced an exception specifically for self-hosted applications. We therefore assume that Home Assistant is affected. Their FAQ states:
Acceptance criteria
Google states:
Hopefully, they will notify us before the April 2027 deadline, although they don’t mention that timing. Let’s look into this before it potentially blocks further releases.
We need to support this flow so users remain signed in to Home Assistant when transferring to a new Android device through device-to-device transfer or cloud backup.
Note
Using Block Store could have helped us, but Google only accepts integrations already in production by September 30, 2026. Given the implementation time and the pace at which Google is reviewing our app, this is not a solution and it would have been only temporary.
Theoretical Simplified restoration flow
Old device
The credential provider also verifies that the RP ID domain authorizes the app through Digital Asset Links https://web.dev/articles/webauthn-rp-id#android_digital_asset_links.
See Google’s Restore Credentials implementation guide.
Caution
Restore Credentials supports only one account per app https://developer.android.com/identity/sign-in/restore-credentials#apps-multiple, so it cannot restore authentication for all servers configured in the Companion app.
We will need to target the last default server and update the restore credential whenever the default server changes. Other servers would still require re-authentication.
Note
Restore Credentials currently requires Google Play services (GMS), through
androidx.credentials:credentials-play-services-auth. This restoration flow would therefore be limited to the full flavor of the Companion app and devices with GMS; it would not be available in the minimal flavor. See Google’s compatibility requirements.New device
Relationship with passkey support
For Home Assistant in general, this restoration flow is very close to passkey support. Both use the same underlying WebAuthn registration and authentication mechanisms, so we should be able to share much of the server-side implementation.
We would still need to distinguish restore credentials from ordinary passkeys and apply the appropriate validation and lifecycle rules. A field such as
purpose = restorecould express that distinction in our API; it is not a standard WebAuthn field. This is more than simply giving an ordinary passkey a different label, since restoration happens without interactive user verification.One main challenge we’ve identified for native passkeys is RP ID domain association. It requires an HTTPS verification endpoint on the RP ID domain that is accessible to the verifier. We cannot assume users’ Home Assistant instances have a publicly reachable domain or support HTTPS.
Browsers don’t require this native app association, but they do validate the RP ID against the website’s origin. Browser passkey usage also requires a secure context—normally HTTPS, apart from development exceptions such as localhost. These constraints matter if we want to support both restoration and ordinary passkey login.
This discussion tracks the required Android support and whether we can converge on shared foundations for passkey support in Home Assistant Core.
Open question
How do we achieve these requirements in Home Assistant?
All reactions