We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
The SCIM JSON for User and Group schema attribute allows only one value
The SCIM JSON for User and Group schema attribute allows only one value. The schemas attribute check should only check for a minimum number of entries not for a maximum. 

For example I would like to be able so support the following

            "schemas": [
                "urn:ietf:params:scim:schemas:extension:servicenow:2.0:User",
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
            ]

To Reproduce
Steps to reproduce the behavior:
Create Property mapping, add

return {
    "schemas" : [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:extention:enterprise:2.0:User"
            ],
    "userName": request.user.username,
    "name": {
        "formatted": request.user.name,
        "givenName": givenName,
        "familyName": familyName,
    },

Expected behavior
JSON containing schemas attribute 

Instead I get 
Stopping sync due to error: Error 1 validation error for User schemas Tuple should have at most 1 item after validation, not 2 [type=too_long, input_value=['urn:ietf:params:scim:sc...on:enterprise:2.0:User'], input_type=list] For further information visit https://errors.pydantic.dev/2.4/v/too_long

Version and Deployment (please complete the following information):

authentik version: [2023.10.2]
Deployment: [docker-compose]

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `authentik/providers/scim/clients/schema.py`
Content:
```
1 """Custom SCIM schemas"""
2 
3 from pydanticscim.group import Group as BaseGroup
4 from pydanticscim.responses import PatchRequest as BasePatchRequest
5 from pydanticscim.responses import SCIMError as BaseSCIMError
6 from pydanticscim.service_provider import Bulk, ChangePassword, Filter, Patch, Sort
7 from pydanticscim.service_provider import (
8     ServiceProviderConfiguration as BaseServiceProviderConfiguration,
9 )
10 from pydanticscim.user import User as BaseUser
11 
12 
13 class User(BaseUser):
14     """Modified User schema with added externalId field"""
15 
16     schemas: tuple[str] = ("urn:ietf:params:scim:schemas:core:2.0:User",)
17     externalId: str | None = None
18 
19 
20 class Group(BaseGroup):
21     """Modified Group schema with added externalId field"""
22 
23     schemas: tuple[str] = ("urn:ietf:params:scim:schemas:core:2.0:Group",)
24     externalId: str | None = None
25 
26 
27 class ServiceProviderConfiguration(BaseServiceProviderConfiguration):
28     """ServiceProviderConfig with fallback"""
29 
30     _is_fallback: bool | None = False
31 
32     @property
33     def is_fallback(self) -> bool:
34         """Check if this service provider config was retrieved from the API endpoint
35         or a fallback was used"""
36         return self._is_fallback
37 
38     @staticmethod
39     def default() -> "ServiceProviderConfiguration":
40         """Get default configuration, which doesn't support any optional features as fallback"""
41         return ServiceProviderConfiguration(
42             patch=Patch(supported=False),
43             bulk=Bulk(supported=False),
44             filter=Filter(supported=False),
45             changePassword=ChangePassword(supported=False),
46             sort=Sort(supported=False),
47             authenticationSchemes=[],
48             _is_fallback=True,
49         )
50 
51 
52 class PatchRequest(BasePatchRequest):
53     """PatchRequest which correctly sets schemas"""
54 
55     schemas: tuple[str] = ("urn:ietf:params:scim:api:messages:2.0:PatchOp",)
56 
57 
58 class SCIMError(BaseSCIMError):
59     """SCIM error with optional status code"""
60 
61     status: int | None
62
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/authentik/providers/scim/clients/schema.py b/authentik/providers/scim/clients/schema.py
--- a/authentik/providers/scim/clients/schema.py
+++ b/authentik/providers/scim/clients/schema.py
@@ -13,14 +13,18 @@
 class User(BaseUser):
     """Modified User schema with added externalId field"""
 
-    schemas: tuple[str] = ("urn:ietf:params:scim:schemas:core:2.0:User",)
+    schemas: list[str] = [
+        "urn:ietf:params:scim:schemas:core:2.0:User",
+    ]
     externalId: str | None = None
 
 
 class Group(BaseGroup):
     """Modified Group schema with added externalId field"""
 
-    schemas: tuple[str] = ("urn:ietf:params:scim:schemas:core:2.0:Group",)
+    schemas: list[str] = [
+        "urn:ietf:params:scim:schemas:core:2.0:Group",
+    ]
     externalId: str | None = None

{"golden_diff": "diff --git a/authentik/providers/scim/clients/schema.py b/authentik/providers/scim/clients/schema.py\n--- a/authentik/providers/scim/clients/schema.py\n+++ b/authentik/providers/scim/clients/schema.py\n@@ -13,14 +13,18 @@\n class User(BaseUser):\n     \"\"\"Modified User schema with added externalId field\"\"\"\n \n-    schemas: tuple[str] = (\"urn:ietf:params:scim:schemas:core:2.0:User\",)\n+    schemas: list[str] = [\n+        \"urn:ietf:params:scim:schemas:core:2.0:User\",\n+    ]\n     externalId: str | None = None\n \n \n class Group(BaseGroup):\n     \"\"\"Modified Group schema with added externalId field\"\"\"\n \n-    schemas: tuple[str] = (\"urn:ietf:params:scim:schemas:core:2.0:Group\",)\n+    schemas: list[str] = [\n+        \"urn:ietf:params:scim:schemas:core:2.0:Group\",\n+    ]\n     externalId: str | None = None\n", "issue": "The SCIM JSON for User and Group schema attribute allows only one value\nThe SCIM JSON for User and Group schema attribute allows only one value. The schemas attribute check should only check for a minimum number of entries not for a maximum. \r\n\r\nFor example I would like to be able so support the following\r\n\r\n            \"schemas\": [\r\n                \"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\",\r\n                \"urn:ietf:params:scim:schemas:core:2.0:User\",\r\n                \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\r\n            ]\r\n\r\nTo Reproduce\r\nSteps to reproduce the behavior:\r\nCreate Property mapping, add\r\n\r\nreturn {\r\n    \"schemas\" : [\r\n                \"urn:ietf:params:scim:schemas:core:2.0:User\",\r\n                \"urn:ietf:params:scim:schemas:extention:enterprise:2.0:User\"\r\n            ],\r\n    \"userName\": request.user.username,\r\n    \"name\": {\r\n        \"formatted\": request.user.name,\r\n        \"givenName\": givenName,\r\n        \"familyName\": familyName,\r\n    },\r\n\r\nExpected behavior\r\nJSON containing schemas attribute \r\n\r\nInstead I get \r\nStopping sync due to error: Error 1 validation error for User schemas Tuple should have at most 1 item after validation, not 2 [type=too_long, input_value=['urn:ietf:params:scim:sc...on:enterprise:2.0:User'], input_type=list] For further information visit https://errors.pydantic.dev/2.4/v/too_long\r\n\r\nVersion and Deployment (please complete the following information):\r\n\r\nauthentik version: [2023.10.2]\r\nDeployment: [docker-compose]\n", "before_files": [{"content": "\"\"\"Custom SCIM schemas\"\"\"\n\nfrom pydanticscim.group import Group as BaseGroup\nfrom pydanticscim.responses import PatchRequest as BasePatchRequest\nfrom pydanticscim.responses import SCIMError as BaseSCIMError\nfrom pydanticscim.service_provider import Bulk, ChangePassword, Filter, Patch, Sort\nfrom pydanticscim.service_provider import (\n    ServiceProviderConfiguration as BaseServiceProviderConfiguration,\n)\nfrom pydanticscim.user import User as BaseUser\n\n\nclass User(BaseUser):\n    \"\"\"Modified User schema with added externalId field\"\"\"\n\n    schemas: tuple[str] = (\"urn:ietf:params:scim:schemas:core:2.0:User\",)\n    externalId: str | None = None\n\n\nclass Group(BaseGroup):\n    \"\"\"Modified Group schema with added externalId field\"\"\"\n\n    schemas: tuple[str] = (\"urn:ietf:params:scim:schemas:core:2.0:Group\",)\n    externalId: str | None = None\n\n\nclass ServiceProviderConfiguration(BaseServiceProviderConfiguration):\n    \"\"\"ServiceProviderConfig with fallback\"\"\"\n\n    _is_fallback: bool | None = False\n\n    @property\n    def is_fallback(self) -> bool:\n        \"\"\"Check if this service provider config was retrieved from the API endpoint\n        or a fallback was used\"\"\"\n        return self._is_fallback\n\n    @staticmethod\n    def default() -> \"ServiceProviderConfiguration\":\n        \"\"\"Get default configuration, which doesn't support any optional features as fallback\"\"\"\n        return ServiceProviderConfiguration(\n            patch=Patch(supported=False),\n            bulk=Bulk(supported=False),\n            filter=Filter(supported=False),\n            changePassword=ChangePassword(supported=False),\n            sort=Sort(supported=False),\n            authenticationSchemes=[],\n            _is_fallback=True,\n        )\n\n\nclass PatchRequest(BasePatchRequest):\n    \"\"\"PatchRequest which correctly sets schemas\"\"\"\n\n    schemas: tuple[str] = (\"urn:ietf:params:scim:api:messages:2.0:PatchOp\",)\n\n\nclass SCIMError(BaseSCIMError):\n    \"\"\"SCIM error with optional status code\"\"\"\n\n    status: int | None\n", "path": "authentik/providers/scim/clients/schema.py"}], "after_files": [{"content": "\"\"\"Custom SCIM schemas\"\"\"\n\nfrom pydanticscim.group import Group as BaseGroup\nfrom pydanticscim.responses import PatchRequest as BasePatchRequest\nfrom pydanticscim.responses import SCIMError as BaseSCIMError\nfrom pydanticscim.service_provider import Bulk, ChangePassword, Filter, Patch, Sort\nfrom pydanticscim.service_provider import (\n    ServiceProviderConfiguration as BaseServiceProviderConfiguration,\n)\nfrom pydanticscim.user import User as BaseUser\n\n\nclass User(BaseUser):\n    \"\"\"Modified User schema with added externalId field\"\"\"\n\n    schemas: list[str] = [\n        \"urn:ietf:params:scim:schemas:core:2.0:User\",\n    ]\n    externalId: str | None = None\n\n\nclass Group(BaseGroup):\n    \"\"\"Modified Group schema with added externalId field\"\"\"\n\n    schemas: list[str] = [\n        \"urn:ietf:params:scim:schemas:core:2.0:Group\",\n    ]\n    externalId: str | None = None\n\n\nclass ServiceProviderConfiguration(BaseServiceProviderConfiguration):\n    \"\"\"ServiceProviderConfig with fallback\"\"\"\n\n    _is_fallback: bool | None = False\n\n    @property\n    def is_fallback(self) -> bool:\n        \"\"\"Check if this service provider config was retrieved from the API endpoint\n        or a fallback was used\"\"\"\n        return self._is_fallback\n\n    @staticmethod\n    def default() -> \"ServiceProviderConfiguration\":\n        \"\"\"Get default configuration, which doesn't support any optional features as fallback\"\"\"\n        return ServiceProviderConfiguration(\n            patch=Patch(supported=False),\n            bulk=Bulk(supported=False),\n            filter=Filter(supported=False),\n            changePassword=ChangePassword(supported=False),\n            sort=Sort(supported=False),\n            authenticationSchemes=[],\n            _is_fallback=True,\n        )\n\n\nclass PatchRequest(BasePatchRequest):\n    \"\"\"PatchRequest which correctly sets schemas\"\"\"\n\n    schemas: tuple[str] = (\"urn:ietf:params:scim:api:messages:2.0:PatchOp\",)\n\n\nclass SCIMError(BaseSCIMError):\n    \"\"\"SCIM error with optional status code\"\"\"\n\n    status: int | None\n", "path": "authentik/providers/scim/clients/schema.py"}]}