Merge pull request #275 from botdeniska/fix/ldap-sts-failure-message

Merge LDAP STS failure message compatibility for embedded console root fallback.
This commit is contained in:
Feng Ruohang
2026-11-03 09:01:54 +08:00
committed by GitHub
2 changed files with 15 additions and 1 deletions
+4 -1
View File
@@ -101,7 +101,10 @@ const (
) )
var ( var (
errLDAPAuthenticationFailed = errors.New("LDAP authentication failed") // One message for unknown users and wrong passwords. The console tries
// the built-in login (root, access keys) only when the LDAP error says
// "not found", so the message keeps those words.
errLDAPAuthenticationFailed = errors.New("LDAP authentication failed: user not found or invalid password")
globalSTSLDAPLoginRateLimiter = newSTSLDAPLoginRateLimiter(time.Minute/time.Duration(stsLDAPLoginBurst), stsLDAPLoginBurst, stsLDAPLoginEntryTTL) globalSTSLDAPLoginRateLimiter = newSTSLDAPLoginRateLimiter(time.Minute/time.Duration(stsLDAPLoginBurst), stsLDAPLoginBurst, stsLDAPLoginEntryTTL)
) )
+11
View File
@@ -2048,6 +2048,17 @@ func TestLDAPBindErrorToSTS(t *testing.T) {
} }
} }
// The console falls back from LDAP to the built-in identity provider (root,
// access keys) only when the LDAP STS error says "not found"
// (pgsty/silo-console api/client.go, NewConsoleCredentials). The uniform
// failure for unknown users and wrong passwords must keep those words.
func TestLDAPAuthFailureKeepsConsoleFallback(t *testing.T) {
_, err := ldapBindErrorToSTS(matchingAuthError{})
if err == nil || !strings.Contains(strings.ToLower(err.Error()), "not found") {
t.Fatalf("the console would not try the built-in login after %q", err)
}
}
func TestSTSLDAPLoginRateLimiterCleanup(t *testing.T) { func TestSTSLDAPLoginRateLimiterCleanup(t *testing.T) {
set := newSTSLDAPLoginKeyLimiterSet(time.Hour, 1, time.Minute) set := newSTSLDAPLoginKeyLimiterSet(time.Hour, 1, time.Minute)
start := time.Unix(0, 0) start := time.Unix(0, 0)