diff --git a/fastapi/security/oauth2.py b/fastapi/security/oauth2.py index 42674b476c..48fff961f6 100644 --- a/fastapi/security/oauth2.py +++ b/fastapi/security/oauth2.py @@ -255,7 +255,7 @@ class OAuth2PasswordRequestFormStrict(OAuth2PasswordRequestForm): ], password: Annotated[ str, - Form(), + Form(json_schema_extra={"format": "password"}), Doc( """ `password` string. The OAuth2 spec requires the exact field name @@ -306,7 +306,7 @@ class OAuth2PasswordRequestFormStrict(OAuth2PasswordRequestForm): ] = None, client_secret: Annotated[ str | None, - Form(), + Form(json_schema_extra={"format": "password"}), Doc( """ If there's a `client_password` (and a `client_id`), they can be sent diff --git a/tests/test_security_oauth2.py b/tests/test_security_oauth2.py index 1c216e95d8..490b2264b6 100644 --- a/tests/test_security_oauth2.py +++ b/tests/test_security_oauth2.py @@ -213,7 +213,11 @@ def test_openapi_schema(): "type": "string", }, "username": {"title": "Username", "type": "string"}, - "password": {"title": "Password", "type": "string"}, + "password": { + "title": "Password", + "type": "string", + "format": "password", + }, "scope": { "title": "Scope", "type": "string", @@ -226,6 +230,7 @@ def test_openapi_schema(): "client_secret": { "title": "Client Secret", "anyOf": [{"type": "string"}, {"type": "null"}], + "format": "password", }, }, }, diff --git a/tests/test_security_oauth2_optional.py b/tests/test_security_oauth2_optional.py index a7eaf59443..c85f483b7c 100644 --- a/tests/test_security_oauth2_optional.py +++ b/tests/test_security_oauth2_optional.py @@ -214,7 +214,11 @@ def test_openapi_schema(): "type": "string", }, "username": {"title": "Username", "type": "string"}, - "password": {"title": "Password", "type": "string"}, + "password": { + "title": "Password", + "type": "string", + "format": "password", + }, "scope": { "title": "Scope", "type": "string", @@ -227,6 +231,7 @@ def test_openapi_schema(): "client_secret": { "title": "Client Secret", "anyOf": [{"type": "string"}, {"type": "null"}], + "format": "password", }, }, }, diff --git a/tests/test_security_oauth2_optional_description.py b/tests/test_security_oauth2_optional_description.py index 0918d352ea..4d995c955c 100644 --- a/tests/test_security_oauth2_optional_description.py +++ b/tests/test_security_oauth2_optional_description.py @@ -215,7 +215,11 @@ def test_openapi_schema(): "type": "string", }, "username": {"title": "Username", "type": "string"}, - "password": {"title": "Password", "type": "string"}, + "password": { + "title": "Password", + "type": "string", + "format": "password", + }, "scope": { "title": "Scope", "type": "string", @@ -228,6 +232,7 @@ def test_openapi_schema(): "client_secret": { "title": "Client Secret", "anyOf": [{"type": "string"}, {"type": "null"}], + "format": "password", }, }, },