Security: tighter project boundaries
Live on preview.zitadel.comReleased in v0.2.0
- A caller whose grants in a project are scoped to a team or a single resource now gets
404, as for an id that names nothing, instead of403when reading or updating a resource outside every scope it holds, so it no longer learns whether that resource exists. - Reading an identity provider connection, its revisions or a schema by id answers not found when the request's
project_idnames a project the resource is not in, where a project secret used to get it from its own project. POST /auth_attemptsandPOST /sessions/exchangetake the project from the project secret, and answer403proj.mismatchwhen the request names another one. A handoff exchange is refused once the release its sign-in started on is revoked.POST /flow/{id}/submitchecks an opaqueOrigin(null), which browsers send from sandboxed frames anddata:pages, against the project's origins, so a project that lists its origins refuses it withreq.invalidinstead of skipping the check.