Managed Shared Supavisor rejects valid custom role credentials after SCRAM verification passes #50553
|
Hi Supabase team, Support ticket: SU-471666 I’m also posting here because this is a Free-plan project and support responses are not guaranteed. We are seeing password authentication rejection for a custom PostgreSQL login role through Managed Shared Supavisor. Environment
The Shared pooler username follows the documented format:
The host also matches the exact Dashboard Connect value. What we verifiedDuring a controlled diagnostic:
Despite this, one Shared Session authentication attempt was rejected with:
No SQL was executed because authentication failed. Relevant UTC log eventsThese are three log records from exactly one authentication attempt, not three retries:
Bounded search window:
Direct connection limitationWe could not test authentication against the Direct database endpoint because the client environment could not reach that endpoint. So we are NOT claiming that this is definitely a Supavisor cache/propagation issue. Our current classification is only:
The key point is: The generated password validates correctly against the SCRAM verifier stored in PostgreSQL, but Shared Supavisor rejects the same credential. Rollback / safetyAfter the diagnostic:
QuestionsCould someone help confirm:
I have a sanitized evidence bundle with the relevant pooler events and diagnostic metadata if that would help. Thanks. |
Replies: 2 comments 2 replies
|
|
Here is the architectural explanation for the rejection behavior you observed, mapping directly to the internal authentication mechanics of Supavisor. 1. Are custom PostgreSQL LOGIN roles supported through Managed Shared Supavisor?Yes. In Supavisor, when 2 & 4. Distinguishing Client -> Supavisor vs Supavisor -> PostgreSQL RejectionYour log sequence precisely confirms where the failure occurred:
The rejection occurred during the Supavisor -> PostgreSQL backend handshake ( Here is the internal flow:
3 & 6. SecretChecker Propagation Delay and Cache Invalidation MechanicsThis behavior is caused by the interaction between the periodic SecretChecker refresh and upstream credential caching:
5. Is a pooler refresh/restart required?No. A pooler restart or project reboot is not necessary. Once the initial upstream Recommended Operational Adjustments
|
Here is the architectural explanation for the rejection behavior you observed, mapping directly to the internal authentication mechanics of Supavisor.
1. Are custom PostgreSQL LOGIN roles supported through Managed Shared Supavisor?
Yes. In Supavisor, when
require_userisfalse(the default multi-tenant configuration on Supabase), roles other than the internal manager user are resolved dynamically usingauth_query(typicallySELECT rolname, rolpassword FROM pg_authid WHERE rolname = $1). Both Session mode (port 5432) and Transaction mode (port 6543) fully support custom roles, provided the username adheres to[ROLE].[PROJECT_REF]and the role hasLOGINpermissions.2 & 4. Distinguishing Cl…