616 строки
21 KiB
JSON
616 строки
21 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"additionalProperties": false,
|
|
"default": {
|
|
"navigationFallback": {
|
|
"rewrite": "/index.html"
|
|
}
|
|
},
|
|
"definitions": {
|
|
"route": {
|
|
"type": "object",
|
|
"required": ["route"],
|
|
"properties": {
|
|
"route": {
|
|
"type": "string",
|
|
"description": "Request route pattern to match. May contain valid wildcards. See documentation: https://aka.ms/swa/config-schema"
|
|
},
|
|
"methods": {
|
|
"type": "array",
|
|
"description": "Request method(s) to match",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": ["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "CONNECT", "OPTIONS", "TRACE"]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"allowedRoles": {
|
|
"type": "array",
|
|
"description": "Roles that are allowed to access this route. If not empty, only role(s) listed are authorized to access the route. Roles are only used for authorization; they are not used to evaluate whether the route matches the request.",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"examples": ["anonymous", "authenticated"]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"description": "Override any matching global headers",
|
|
"additionalProperties": true
|
|
},
|
|
"redirect": {
|
|
"type": "string",
|
|
"description": "Redirect to a relative or absolute path, or an external URI. Default status code is 302, override with 301."
|
|
},
|
|
"statusCode": {
|
|
"type": "integer",
|
|
"description": "Status code override"
|
|
},
|
|
"rewrite": {
|
|
"type": "string",
|
|
"description": "A path to rewrite the request route to"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"auth": {
|
|
"type": "object",
|
|
"required": ["identityProviders"],
|
|
"properties": {
|
|
"rolesSource": {
|
|
"type": "string",
|
|
"description": "Route to API function for assigning roles. For example, \"/api/GetRoles\". See https://aka.ms/swa-roles-function"
|
|
},
|
|
"identityProviders": {
|
|
"type": "object",
|
|
"properties": {
|
|
"azureActiveDirectory": {
|
|
"type": "object",
|
|
"required": ["registration"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the azureActiveDirectory provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["openIdIssuer", "clientSecretSettingName"],
|
|
"properties": {
|
|
"openIdIssuer": {
|
|
"type": "string",
|
|
"description": "The endpoint for the OpenID configuration of the AAD tenant"
|
|
},
|
|
"clientIdSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Application (client) ID for the Azure AD app registration"
|
|
},
|
|
"clientSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the client secret for the Azure AD app registration"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"login": {
|
|
"type": "object",
|
|
"description": "",
|
|
"properties": {
|
|
"loginParameters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"userDetailsClaim": {
|
|
"type": "string",
|
|
"description": "The name of the claim from which we should read user details"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"apple": {
|
|
"type": "object",
|
|
"required": ["registration"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the apple provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["clientSecretSettingName"],
|
|
"properties": {
|
|
"clientIdSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client ID"
|
|
},
|
|
"clientSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client Secret"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"login": {
|
|
"type": "object",
|
|
"description": "",
|
|
"properties": {
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"userDetailsClaim": {
|
|
"type": "string",
|
|
"description": "The name of the claim from which we should read user details"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"facebook": {
|
|
"type": "object",
|
|
"required": ["registration"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the facebook provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["appSecretSettingName"],
|
|
"properties": {
|
|
"appIdSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the App ID"
|
|
},
|
|
"appSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the App Secret"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"login": {
|
|
"type": "object",
|
|
"description": "",
|
|
"properties": {
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"userDetailsClaim": {
|
|
"type": "string",
|
|
"description": "The name of the claim from which we should read user details"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"github": {
|
|
"type": "object",
|
|
"required": ["registration"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the gitHub provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["clientSecretSettingName"],
|
|
"properties": {
|
|
"clientIdSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client ID"
|
|
},
|
|
"clientSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client Secret"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"login": {
|
|
"type": "object",
|
|
"description": "",
|
|
"properties": {
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"userDetailsClaim": {
|
|
"type": "string",
|
|
"description": "The name of the claim from which we should read user details"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"google": {
|
|
"type": "object",
|
|
"required": ["registration"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the google provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["clientSecretSettingName"],
|
|
"properties": {
|
|
"clientIdSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client ID"
|
|
},
|
|
"clientSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client Secret"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"login": {
|
|
"type": "object",
|
|
"description": "",
|
|
"properties": {
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"userDetailsClaim": {
|
|
"type": "string",
|
|
"description": "The name of the claim from which we should read user details"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"twitter": {
|
|
"type": "object",
|
|
"required": ["registration"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the twitter provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["consumerSecretSettingName"],
|
|
"properties": {
|
|
"consumerKeySettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Consumer Key"
|
|
},
|
|
"consumerSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Consumer Secret"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"userDetailsClaim": {
|
|
"type": "string",
|
|
"description": "The name of the claim from which we should read user details"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"customOpenIdConnectProviders": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
".*": {
|
|
"required": ["registration", "login"],
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "<false> if the custom OpenID Connect provider is not enabled, <true> otherwise",
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"required": ["clientCredential", "openIdConnectConfiguration"],
|
|
"properties": {
|
|
"clientIdSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client ID"
|
|
},
|
|
"clientCredential": {
|
|
"type": "object",
|
|
"required": ["clientSecretSettingName"],
|
|
"properties": {
|
|
"clientSecretSettingName": {
|
|
"type": "string",
|
|
"description": "The name of the application setting containing the Client Secret"
|
|
}
|
|
}
|
|
},
|
|
"openIdConnectConfiguration": {
|
|
"type": "object",
|
|
"properties": {
|
|
"authorizationEndpoint": {
|
|
"type": "string",
|
|
"description": "The path to the authorization endpoint"
|
|
},
|
|
"tokenEndpoint": {
|
|
"type": "string",
|
|
"description": "The path to the token endpoint"
|
|
},
|
|
"issuer": {
|
|
"type": "string",
|
|
"description": "The path to the issuer endpoint"
|
|
},
|
|
"certificationUri": {
|
|
"type": "string",
|
|
"description": "The path to the jwks uri"
|
|
},
|
|
"wellKnownOpenIdConfiguration": {
|
|
"type": "string",
|
|
"description": "The path to the well known configuration endpoint"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"login": {
|
|
"type": "object",
|
|
"description": "",
|
|
"properties": {
|
|
"nameClaimType": {
|
|
"type": "string"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"loginParameterNames": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"description": "Documentation: https://aka.ms/swa/config-schema",
|
|
"id": "https://json.schemastore.org/staticwebapp.config.json",
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"default": "https://json.schemastore.org/staticwebapp.config.json",
|
|
"description": "JSON schema"
|
|
},
|
|
"routes": {
|
|
"type": "array",
|
|
"description": "Route definitions to modify routing behavior",
|
|
"default": [
|
|
{
|
|
"route": "/example",
|
|
"rewrite": "/example.html"
|
|
}
|
|
],
|
|
"items": {
|
|
"examples": [
|
|
{
|
|
"route": "/example",
|
|
"rewrite": "/example.html"
|
|
},
|
|
{
|
|
"route": "/login",
|
|
"redirect": "/.auth/login/github"
|
|
}
|
|
],
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/route"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"navigationFallback": {
|
|
"type": "object",
|
|
"description": "A default file to return if the request does not match a resource",
|
|
"default": {
|
|
"rewrite": "/index.html"
|
|
},
|
|
"required": ["rewrite"],
|
|
"properties": {
|
|
"rewrite": {
|
|
"type": "string",
|
|
"description": "The default file to return if the request does not match a resource",
|
|
"default": "/index.html"
|
|
},
|
|
"exclude": {
|
|
"type": "array",
|
|
"description": "Paths to exclude from the fallback route. May use valid wildcards. https://aka.ms/swa/config-schema",
|
|
"examples": [["*.{jpg,gif,png}", "assets/*"]]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"responseOverrides": {
|
|
"type": "object",
|
|
"description": "Custom error pages or redirects",
|
|
"examples": [
|
|
{
|
|
"404": {
|
|
"rewrite": "/custom_404.html",
|
|
"statusCode": 200
|
|
}
|
|
}
|
|
],
|
|
"propertyNames": {
|
|
"pattern": "^\\d+$"
|
|
},
|
|
"patternProperties": {
|
|
".*": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"redirect": {
|
|
"type": "string",
|
|
"description": "Redirect to a relative or absolute path, or an external URI. Default status code is 302, override with 301."
|
|
},
|
|
"statusCode": {
|
|
"type": "integer",
|
|
"description": "Status code"
|
|
},
|
|
"rewrite": {
|
|
"type": "string",
|
|
"description": "A path to rewrite the request route to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"mimeTypes": {
|
|
"type": "object",
|
|
"description": "Custom mime types configuration",
|
|
"default": {},
|
|
"examples": [
|
|
{
|
|
".config": "application/xml"
|
|
}
|
|
],
|
|
"patternProperties": {
|
|
"^\\..+$": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"globalHeaders": {
|
|
"type": "object",
|
|
"description": "Default headers to set on all responses",
|
|
"additionalProperties": true
|
|
},
|
|
"auth": {
|
|
"$ref": "#/definitions/auth"
|
|
},
|
|
"networking": {
|
|
"type": "object",
|
|
"description": "Networking configuration",
|
|
"properties": {
|
|
"allowedIpRanges": {
|
|
"type": "array",
|
|
"description": "Restrict access to one or more IPv4 ranges. Supports CIDR notation (e.g., \"192.168.100.14/24\")",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"examples": [["10.0.0.0/24", "192.1.1.1/10"]]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"forwardingGateway": {
|
|
"type": "object",
|
|
"description": "Forwarding gateway configuration",
|
|
"properties": {
|
|
"allowedForwardedHosts": {
|
|
"type": "array",
|
|
"description": "The value of `X-Forwarded-Host` to allow to be used when generating redirect URLs",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"examples": [["example.org", "www.example.org", "staging.example.org"]]
|
|
},
|
|
"requiredHeaders": {
|
|
"type": "object",
|
|
"description": "HTTP header name/value pairs that are required for access",
|
|
"examples": [
|
|
{
|
|
"X-Azure-FDID": "10dd26ef"
|
|
}
|
|
],
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"platform": {
|
|
"type": "object",
|
|
"description": "Platform configuration",
|
|
"properties": {
|
|
"apiRuntime": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dotnet:3.1",
|
|
"dotnet:6.0",
|
|
"dotnet-isolated:6.0",
|
|
"dotnet-isolated:7.0",
|
|
"dotnet-isolated:8.0",
|
|
"node:12",
|
|
"node:14",
|
|
"node:16",
|
|
"node:18",
|
|
"node:20",
|
|
"python:3.8",
|
|
"python:3.9",
|
|
"python:3.10"
|
|
],
|
|
"description": "Language runtime for the managed functions API"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"trailingSlash": {
|
|
"type": "string",
|
|
"enum": ["always", "never", "auto"],
|
|
"description": "Trailing slash configuration"
|
|
}
|
|
},
|
|
"title": "Azure Static Web Apps configuration file",
|
|
"type": "object"
|
|
}
|