Sdílet prostřednictvím


Konfigurace založená na souborech v ověřování služby Aplikace Azure Service

Při ověřování pomocí služby App Service je možné nakonfigurovat nastavení ověřování se souborem. Před zveřejněním prostřednictvím rozhraní API Azure Resource Manageru možná budete muset použít konfiguraci založenou na souborech, abyste mohli použít určité funkce ověřování nebo autorizace služby App Service ve verzi Preview.

Důležité

Mějte na paměti, že datová část aplikace, a proto se tento soubor může pohybovat mezi prostředími, jako jsou sloty. Je pravděpodobné, že byste chtěli, aby se ke každému slotu připnula jiná registrace aplikace, a v těchto případech byste měli místo konfiguračního souboru dál používat standardní metodu konfigurace.

Povolení konfigurace založené na souborech

  1. Vytvořte nový soubor JSON pro konfiguraci v kořenovém adresáři projektu (nasazený na C:\home\site\wwwroot ve vaší webové / aplikaci funkcí). Vyplňte požadovanou konfiguraci podle odkazu na konfiguraci založenou na souborech. Pokud upravujete existující konfiguraci Azure Resource Manageru, nezapomeňte přeložit vlastnosti zachycené v kolekci do konfiguračního authsettings souboru.

  2. Upravte existující konfiguraci, která se zaznamenává v rozhraních API Azure Resource Manageru v části Microsoft.Web/sites/<siteName>/config/authsettingsV2. Pokud ho chcete upravit, můžete použít šablonu Azure Resource Manageru nebo nástroj, jako je Azure Resource Explorer. V kolekci authsettingsV2 nastavte dvě vlastnosti (můžete odebrat ostatní):

    1. Nastavit platform.enabled na true
    2. Nastavte platform.configFilePath název souboru (například "auth.json")

Poznámka:

Formát pro platform.configFilePath různé platformy. Ve Windows jsou podporovány relativní i absolutní cesty. Relativní se doporučuje. V Linuxu se v současné době podporují jenom absolutní cesty, takže hodnota nastavení by měla být /home/site/wwwroot/auth.json" nebo podobná.

Po provedení této aktualizace konfigurace se obsah souboru použije k definování chování ověřování nebo autorizace služby App Service pro daný web. Pokud se někdy chcete vrátit do konfigurace Azure Resource Manageru, můžete to udělat tak, že odeberete nastavení platform.configFilePath na hodnotu null.

Referenční informace ke konfiguračnímu souboru

Všechny tajné kódy, na které se budou odkazovat z konfiguračního souboru, musí být uloženy jako nastavení aplikace. Nastavení můžete pojmenovat cokoliv, co si přejete. Stačí se ujistit, že odkazy z konfiguračního souboru používají stejné klíče.

Následující možnosti konfigurace v souboru vyčerpají:

{
    "platform": {
        "enabled": <true|false>
    },
    "globalValidation": {
        "unauthenticatedClientAction": "RedirectToLoginPage|AllowAnonymous|RejectWith401|RejectWith404",
        "redirectToProvider": "<default provider alias>",
        "excludedPaths": [
            "/path1",
            "/path2",
            "/path3/subpath/*"
        ]
    },
    "httpSettings": {
        "requireHttps": <true|false>,
        "routes": {
            "apiPrefix": "<api prefix>"
        },
        "forwardProxy": {
            "convention": "NoProxy|Standard|Custom",
            "customHostHeaderName": "<host header value>",
            "customProtoHeaderName": "<proto header value>"
        }
    },
    "login": {
        "routes": {
            "logoutEndpoint": "<logout endpoint>"
        },
        "tokenStore": {
            "enabled": <true|false>,
            "tokenRefreshExtensionHours": "<double>",
            "fileSystem": {
                "directory": "<directory to store the tokens in if using a file system token store (default)>"
            },
            "azureBlobStorage": {
                "sasUrlSettingName": "<app setting name containing the sas url for the Azure Blob Storage if opting to use that for a token store>"
            }
        },
        "preserveUrlFragmentsForLogins": <true|false>,
        "allowedExternalRedirectUrls": [
            "https://uri1.azurewebsites.net/",
            "https://uri2.azurewebsites.net/",
            "url_scheme_of_your_app://easyauth.callback"
        ],
        "cookieExpiration": {
            "convention": "FixedTime|IdentityDerived",
            "timeToExpiration": "<timespan>"
        },
        "nonce": {
            "validateNonce": <true|false>,
            "nonceExpirationInterval": "<timespan>"
        }
    },
    "identityProviders": {
        "azureActiveDirectory": {
            "enabled": <true|false>,
            "registration": {
                "openIdIssuer": "<issuer url>",
                "clientId": "<app id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_AAD_SECRET",
            },
            "login": {
                "loginParameters": [
                    "paramName1=value1",
                    "paramName2=value2"
                ]
            },
            "validation": {
                "allowedAudiences": [
                    "audience1",
                    "audience2"
                ]
            }
        },
        "facebook": {
            "enabled": <true|false>,
            "registration": {
                "appId": "<app id>",
                "appSecretSettingName": "APP_SETTING_CONTAINING_FACEBOOK_SECRET"
            },
            "graphApiVersion": "v3.3",
            "login": {
                "scopes": [
                    "public_profile",
                    "email"
                ]
            },
        },
        "gitHub": {
            "enabled": <true|false>,
            "registration": {
                "clientId": "<client id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_GITHUB_SECRET"
            },
            "login": {
                "scopes": [
                    "profile",
                    "email"
                ]
            }
        },
        "google": {
            "enabled": true,
            "registration": {
                "clientId": "<client id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_GOOGLE_SECRET"
            },
            "login": {
                "scopes": [
                    "profile",
                    "email"
                ]
            },
            "validation": {
                "allowedAudiences": [
                    "audience1",
                    "audience2"
                ]
            }
        },
        "twitter": {
            "enabled": <true|false>,
            "registration": {
                "consumerKey": "<consumer key>",
                "consumerSecretSettingName": "APP_SETTING_CONTAINING TWITTER_CONSUMER_SECRET"
            }
        },
        "apple": {
            "enabled": <true|false>,
            "registration": {
                "clientId": "<client id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_APPLE_SECRET"
            },
            "login": {
                "scopes": [
                    "profile",
                    "email"
                ]
            }
        },
        "openIdConnectProviders": {
            "<providerName>": {
                "enabled": <true|false>,
                "registration": {
                    "clientId": "<client id>",
                    "clientCredential": {
                        "clientSecretSettingName": "<name of app setting containing client secret>"
                    },
                    "openIdConnectConfiguration": {
                        "authorizationEndpoint": "<url specifying authorization endpoint>",
                        "tokenEndpoint": "<url specifying token endpoint>",
                        "issuer": "<url specifying issuer>",
                        "certificationUri": "<url specifying jwks endpoint>",
                        "wellKnownOpenIdConfiguration": "<url specifying .well-known/open-id-configuration endpoint - if this property is set, the other properties of this object are ignored, and authorizationEndpoint, tokenEndpoint, issuer, and certificationUri are set to the corresponding values listed at this endpoint>"
                    }
                },
                "login": {
                    "nameClaimType": "<name of claim containing name>",
                    "scopes": [
                        "openid",
                        "profile",
                        "email"
                    ],
                    "loginParameterNames": [
                        "paramName1=value1",
                        "paramName2=value2"
                    ],
                }
            },
            //...
        }
    }
}

Další materiály