crabidy/crabidy-server
Test User a275d3bc77 Auth: anonymous callers inherit the highest unguarded role
Replace the "any hash configured => every RPC needs credentials" switch
with a top-down model: a request with no credentials is granted the most
privileged role whose password is not set, and each password lowers that
floor. Nothing guarded -> owner (the open default); guard owner ->
anonymous is queue-owner; guard owner+queue_owner -> queue-appender;
guard all three -> credentials required for everything. A credential
still elevates a caller to its role; a present-but-wrong credential is
denied, never silently downgraded to the anonymous role.

Because the anonymous role is always the highest unguarded one, guarding
a lower role while a higher one is open is meaningless. Valid guarded
sets are prefixes of [owner, queue_owner, queue_appender];
AuthSettings::validate rejects any other order, load aborts startup on
it (fail-closed), and `guard` refuses to write it.

Docs (architecture, quality, mdbook, README) updated to the new model.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 16:06:01 +02:00
..
src Auth: anonymous callers inherit the highest unguarded role 2026-07-23 16:06:01 +02:00
tests Auth: anonymous callers inherit the highest unguarded role 2026-07-23 16:06:01 +02:00
Cargo.lock Add cargo-server with liby service draft 2023-05-22 22:05:38 +02:00
Cargo.toml Implement the comprehensive CLI (stage 5) 2026-07-22 12:13:51 +02:00
build.rs Implement the comprehensive CLI (stage 5) 2026-07-22 12:13:51 +02:00