Fájlalapú konfiguráció Azure App Service hitelesítésben

A App Service hitelesítéssel a hitelesítési beállítások fájllal konfigurálhatók. Előfordulhat, hogy a App Service hitelesítés/engedélyezés bizonyos előzetes funkcióinak használatához fájlalapú konfigurációt kell használnia, mielőtt azok az Azure Resource Manager API-kon keresztül elérhetővé válnak.

Fontos

Ne feledje, hogy az alkalmazás hasznos adatai, így ez a fájl is mozoghat a környezetek között, akárcsak a tárolóhelyek esetében. Valószínű, hogy egy másik alkalmazásregisztrációt szeretne rögzíteni az egyes pontokhoz, és ezekben az esetekben a konfigurációs fájl használata helyett továbbra is a standard konfigurációs módszert kell használnia.

Fájlalapú konfiguráció engedélyezése

  1. Hozzon létre egy új JSON-fájlt a konfigurációhoz a projekt gyökerében (üzembe helyezve a D:\home\site\wwwroot helyen a webes / függvényalkalmazásban). Adja meg a kívánt konfigurációt a fájlalapú konfigurációs referencia alapján. Ha módosít egy meglévő Azure Resource Manager-konfigurációt, mindenképpen fordítsa le a authsettings gyűjteményben rögzített tulajdonságokat a konfigurációs fájlba.

  2. Módosítsa a meglévő konfigurációt, amely az Azure Resource Manager API-kban van rögzítve a alattMicrosoft.Web/sites/<siteName>/config/authsettingsV2. A módosításhoz használhat egy Azure Resource Manager-sablont vagy egy olyan eszközt, mint az Azure Resource Explorer. Az authsettingsV2 gyűjteményben állítson be két tulajdonságot (eltávolíthat másokat):

    1. Állítsa platform.enabled "igaz" értékre
    2. Állítsa a platform.configFilePath fájl nevére (például "auth.json")

Megjegyzés

A formátuma platform.configFilePath platformonként változik. Windows rendszeren a relatív és az abszolút elérési utak is támogatottak. A relatív érték használata ajánlott. Linux esetén jelenleg csak az abszolút elérési utak támogatottak, ezért a beállítás értéke legyen "/home/site/wwwroot/auth.json" vagy hasonló.

Miután elvégezte ezt a konfigurációs frissítést, a fájl tartalma határozza meg az adott hely App Service hitelesítésének/engedélyezésének viselkedését. Ha valaha is vissza szeretne térni az Azure Resource Manager konfigurációjához, ezt a beállítás platform.configFilePath null értékre állításának eltávolításával teheti meg.

Konfigurációs fájl referenciája

A konfigurációs fájlból hivatkozott titkos kódokat alkalmazásbeállításokként kell tárolni. Bármilyen nevet adhat a beállításoknak. Csak győződjön meg arról, hogy a konfigurációs fájl hivatkozásai ugyanazokat a kulcsokat használják.

Az alábbi lehetőségek kimerítik a fájl lehetséges konfigurációs beállításait:

{
    "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"
                    ],
                }
            },
            //...
        }
    }
}

További erőforrások