Configurazione basata su file in Servizio app di Azure autenticazione

Con servizio app autenticazione, le impostazioni di autenticazione possono essere configurate con un file. Potrebbe essere necessario usare la configurazione basata su file per usare determinate funzionalità di anteprima servizio app autenticazione/autorizzazione prima che siano esposte tramite le API Resource Manager Azure.

Importante

Tenere presente che il payload dell'app e quindi questo file possono spostarsi tra gli ambienti, come con gli slot. È probabile che si voglia aggiungere una registrazione dell'app diversa a ogni slot e in questi casi è consigliabile continuare a usare il metodo di configurazione standard invece di usare il file di configurazione.

Abilitazione della configurazione basata su file

  1. Creare un nuovo file JSON per la configurazione nella radice del progetto (distribuito in D:\home\site\wwwroot nell'app Web/per le funzioni). Compilare la configurazione desiderata in base alle informazioni di riferimento sulla configurazione basata su file. Se si modifica una configurazione Resource Manager azure esistente, assicurarsi di convertire le proprietà acquisite authsettings nella raccolta nel file di configurazione.

  2. Modificare la configurazione esistente, acquisita nelle API Resource Manager Azure in Microsoft.Web/sites/<siteName>/config/authsettingsV2. Per modificare questa impostazione, è possibile usare un modello Resource Manager Azure o uno strumento come Azure Resource Explorer. All'interno della raccolta authsettingsV2 è necessario impostare due proprietà e rimuovere altre proprietà:

    1. Impostare platform.enabled su "true"
    2. Impostare platform.configFilePath sul nome del file , ad esempio "auth.json"

Nota

Il formato per platform.configFilePath varia a seconda delle piattaforme. In Windows sono supportati sia percorsi relativi che assoluti. È consigliabile utilizzare relative. Per Linux, attualmente sono supportati solo i percorsi assoluti, quindi il valore dell'impostazione deve essere "/home/site/wwwroot/auth.json" o simile.

Dopo aver effettuato l'aggiornamento della configurazione, il contenuto del file verrà usato per definire il comportamento dell servizio app as autenticazione/autorizzazione per il sito. Se si vuole tornare ad Azure Resource Manager configurazione, è possibile farlo rimuovendo la modifica dell'impostazione platform.configFilePath su Null.

Informazioni di riferimento sul file di configurazione

Tutti i segreti a cui verrà fatto riferimento dal file di configurazione devono essere archiviati come impostazioni dell'applicazione. È possibile assegnare alle impostazioni il nome desiderato. È sufficiente assicurarsi che i riferimenti dal file di configurazione usino le stesse chiavi.

Le opzioni di configurazione possibili all'interno del file sono esaurite:

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

Altre risorse