* Add ingress rate limiting hooks * Fix ingress rate limiting middleware setup * Harden rate limiter policy validation * Preserve routed endpoints during rate limiting * Address rate limiting review feedback * Address rate limiting Copilot feedback * Register rate limiter services for external policies * Address rate limiting review comments * Keep rate limiter service detection best effort * Address rate limiting review comments * Remove brittle rate limiter validation * Address rate limiting review feedback * Address rate limiting nullable review * Address rate limiting review feedback * Assign ingress rate limit policies when enabled * Refine ingress rate limiting middleware cleanup * Address rate limiting review feedback * Align rate limiting review feedback * Clarify rate limiting policy semantics * Stabilize rate limiting exception tests * Fix rate limiting endpoint matching default
109 lines
2.4 KiB
JSON
109 lines
2.4 KiB
JSON
{
|
|
"Logging": {
|
|
"LogLevel": {
|
|
"Default": "Warning",
|
|
"Microsoft.Hosting.Lifetime": "Information",
|
|
"Elsa": "Warning",
|
|
"Elsa.Workflows.ActivityRegistry": "Error",
|
|
"Elsa.Server.Web.ActivityHosts": "Information"
|
|
}
|
|
},
|
|
"HostBuilder": {
|
|
"reloadConfigOnChange": true
|
|
},
|
|
"AllowedHosts": "*",
|
|
"Multitenancy": {
|
|
"Tenants": [
|
|
{
|
|
"Id": null,
|
|
"Name": "Default",
|
|
"Configuration": {
|
|
"Http": {
|
|
"Prefix": "",
|
|
"Host": "localhost:5001"
|
|
},
|
|
"ConnectionStrings": {
|
|
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Id": "tenant-1",
|
|
"Name": "Tenant 1",
|
|
"Configuration": {
|
|
"Http": {
|
|
"Prefix": "tenant-1",
|
|
"Host": "localhost:5001"
|
|
},
|
|
"ConnectionStrings": {
|
|
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Id": "tenant-2",
|
|
"Name": "Tenant 2",
|
|
"Configuration": {
|
|
"Http": {
|
|
"Prefix": "tenant-2",
|
|
"Host": "localhost:5001"
|
|
},
|
|
"ConnectionStrings": {
|
|
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"Http": {
|
|
"BaseUrl": "https://localhost:5001",
|
|
"BasePath": "/workflows",
|
|
"ApiRoutePrefix": "elsa/api",
|
|
"AvailableContentTypes": [
|
|
"application/json",
|
|
"application/xml",
|
|
"text/plain",
|
|
"text/html"
|
|
]
|
|
},
|
|
"IngressRateLimiting": {
|
|
"Enabled": false,
|
|
"ApiPermitLimit": 120,
|
|
"ApiWindowSeconds": 60,
|
|
"ApiQueueLimit": 0,
|
|
"HttpWorkflowPermitLimit": 60,
|
|
"HttpWorkflowWindowSeconds": 60,
|
|
"HttpWorkflowQueueLimit": 0
|
|
},
|
|
"Identity": {
|
|
"Tokens": {
|
|
"SigningKey": "CHANGE_ME_TO_A_SECURE_RANDOM_KEY",
|
|
"AccessTokenLifetime": "1:00:00:00",
|
|
"RefreshTokenLifetime": "7:00:00:00"
|
|
},
|
|
"Roles": [
|
|
{
|
|
"Id": "admin",
|
|
"Name": "Administrator",
|
|
"Permissions": [
|
|
"*"
|
|
],
|
|
"TenantId": "default"
|
|
}
|
|
]
|
|
},
|
|
"Scripting": {
|
|
"CSharp": {
|
|
"AllowHostCodeExecution": false
|
|
},
|
|
"Python": {
|
|
"AllowHostCodeExecution": true,
|
|
"PythonDllPath": "",
|
|
"Scripts": [
|
|
"def greet(name): return f'Hello {name}!'",
|
|
"def say_hello_world(): return greet('World')"
|
|
]
|
|
}
|
|
}
|
|
}
|