feat(key_management): allow @ in key_alias for email-based aliases (#23003)

Adds @ to the _KEY_ALIAS_PATTERN allowed character set so that
key aliases like user/user@example.com are accepted. Updates tests
to cover email-based alias formats.
This commit is contained in:
hliu-roblox 2026-03-06 17:24:42 -08:00 committed by Milan
parent cbbb79a92f
commit 6f878d4503
2 changed files with 5 additions and 3 deletions

View file

@ -4991,7 +4991,7 @@ async def test_key_logging(
)
_KEY_ALIAS_PATTERN = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_\-/\.]{0,253}[a-zA-Z0-9]$")
_KEY_ALIAS_PATTERN = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_\-/\.@]{0,253}[a-zA-Z0-9]$")
def _validate_key_alias_format(key_alias: Optional[str]) -> None:
@ -5009,7 +5009,7 @@ def _validate_key_alias_format(key_alias: Optional[str]) -> None:
if not _KEY_ALIAS_PATTERN.match(key_alias):
raise ProxyException(
message="Invalid key_alias format. Must be 2-255 characters, start/end with alphanumeric, and only contain a-zA-Z0-9_-/.",
message="Invalid key_alias format. Must be 2-255 characters, start/end with alphanumeric, and only contain a-zA-Z0-9_-/.@.",
type=ProxyErrorTypes.bad_request_error,
param="key_alias",
code=400,

View file

@ -6432,6 +6432,8 @@ class TestValidateKeyAliasFormat:
_validate_key_alias_format("valid/alias")
_validate_key_alias_format("a" * 255)
_validate_key_alias_format("my-key-123")
_validate_key_alias_format("user/user@example.com")
_validate_key_alias_format("team/user@example.com")
def test_validate_key_alias_format_invalid(self):
from litellm.proxy.management_endpoints.key_management_endpoints import _validate_key_alias_format
@ -6444,7 +6446,7 @@ class TestValidateKeyAliasFormat:
"!", # special char
"-start", # non-alphanumeric start
"end-", # non-alphanumeric end
"invalid@char", # invalid char
"invalid#char", # invalid char
"a" * 256, # too long
" leading",
"trailing ",