Sdílet prostřednictvím


Konfigurace založená na souborech v ověřování Azure App Service

S App Service ověřování je možné nakonfigurovat nastavení ověřování pomocí souboru. Možná budete muset použít konfiguraci založenou na souborech, abyste mohli využít určité funkce App Service ověřování nebo autorizace před jejich zveřejněním prostřednictvím rozhraní API azure Resource Manager.

Důležité

Mějte na paměti, že datová část aplikace, a tedy i tento soubor, se může přesouvat mezi prostředími, stejně jako u slotů. Je pravděpodobné, že byste ke každému slotu chtěli připnout jinou registraci aplikace. V těchto případech byste měli místo konfiguračního souboru dál používat standardní metodu konfigurace.

Povolení konfigurace na základě souborů

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

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

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

Poznámka

Formát nástroje platform.configFilePath se u jednotlivých platforem liší. Ve Windows jsou podporovány relativní i absolutní cesty. Doporučuje se relativní. V Linuxu jsou v současné době podporovány pouze 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í App Service ověřování / autorizace pro danou lokalitu. Pokud byste se někdy chtěli vrátit ke konfiguraci Azure Resource Manager, můžete to udělat odebráním změny nastavení platform.configFilePath na hodnotu null.

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

Všechny tajné kódy, na které bude odkazováno z konfiguračního souboru, musí být uloženy jako nastavení aplikace. Nastavení můžete pojmenovat, jak chcete. Ujistěte se, že odkazy z konfiguračního souboru používají stejné klíče.

Následující příkaz vyčerpá možné možnosti konfigurace v souboru:

{
    "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ší zdroje informací