Hi everyone,
I ran into the same problem with Passbolt in Orion and spent some time debugging it with the extension's background console. The good news: I think I found the actual cause. It's not the extension or the Passbolt server. Orion doesn't store cookies set in responses to requests made by the extension, so the login session is never established.
Here are the details, in case it helps the Orion team fix this (ai assisted):
Cookies set in responses to extension requests are not stored (breaks Passbolt login)
Summary:
When a web extension makes a request to a host covered by its host_permissions, Orion treats the request as cross-site and does not store cookies from the Set-Cookie response header. Chrome and Firefox store these cookies. This makes the Passbolt password manager extension unusable in Orion, because its login session is established via such a request.
Steps to reproduce:
- Install the Passbolt browser extension (Chrome Web Store or Firefox Add-ons version, both affected).
- Complete account recovery against a self-hosted Passbolt instance (https://passbolt.example.com).
- Open the instance in a tab. The extension's login iframe is shown correctly.
- Enter the passphrase and log in.
Expected behavior:
The session cookie from the login response is stored, and the user is logged in, as in Chrome and Firefox.
Actual behavior:
The page redirects from / to /auth/login?redirect=%2F and asks for the email address again. The session is never established.
Technical findings (from the extension's background console):
- The login response contains a valid Set-Cookie header.
- The cookie is not stored: subsequent requests from the extension are sent without a Cookie header and return 401 (/auth/is-authenticated.json, /users/<id>.json).
- Extension requests to the host carry "Sec-Fetch-Site: cross-site". In Chrome, requests from an extension to hosts in its host_permissions are treated as first-party.
- Disabling cross-site tracking prevention / third-party cookie blocking, globally and per-site for the host, makes no difference.
Request excerpt:
GET /auth/is-authenticated.json
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
(no Cookie header)
-> 401
Suggested fix:
Treat extension requests to hosts in host_permissions as first-party for cookie storage, consistent with Chrome and Firefox.
Orion, OS version; hardware type:
Orion 1.1.3 (152), WebKit 625.1.8, MacBook Pro 26.6.2 (Build 25G83)
Passbolt extension version: 5.17.1