Configuração baseada em arquivo na autenticação do Serviço de Aplicativo do Azure
Com a autenticação do Serviço de Aplicativo, as configurações de autenticação podem ser configuradas com um arquivo. Talvez seja necessário usar a configuração baseada em arquivo para usar determinados recursos de versão prévia da autenticação/autorização do Serviço de Aplicativo antes de serem expostos por meio de APIs do Azure Resource Manager.
Importante
Lembre-se de que o conteúdo do aplicativo e, portanto, esse arquivo pode ser movido entre ambientes, assim como nos slots. É provável que você queira um registro de aplicativo diferente fixado em cada slot e, nesses casos, você deve continuar usando o método de configuração padrão em vez de usar o arquivo de configuração.
Habilitação da configuração baseada em arquivo
Crie um arquivo JSON para sua configuração na raiz do seu projeto (implantado em C:\home\site\wwwroot no aplicativo Web/de funções). Preencha a configuração desejada de acordo com a referência de configuração baseada em arquivo. Se estiver modificando uma configuração de Azure Resource Manager existente, certifique-se de converter as propriedades capturadas na coleção
authsettings
em seu arquivo de configuração.Modifique a configuração existente, que é capturada nas APIs do Azure Resource Manager em
Microsoft.Web/sites/<siteName>/config/authsettingsV2
. Para modificar isso, você pode usar um modelo de Azure Resource Manager ou uma ferramenta como Azure Resource Explorer. Dentro da coleção authsettingsV2, defina duas propriedades (você pode remover outras):- Defina
platform.enabled
como "true" - Defina
platform.configFilePath
como o nome do arquivo (por exemplo, "auth.json")
- Defina
Observação
O formato de platform.configFilePath
varia entre plataformas. No Windows, há suporte para caminhos relativos e absolutos. Relativo é recomendado. Para o Linux, somente caminhos absolutos têm suporte no momento, portanto, o valor da configuração deve ser "/home/site/wwwroot/auth.json" ou semelhante.
Depois de fazer essa atualização de configuração, o conteúdo do arquivo será usado para definir o comportamento da Autenticação/Autorização do Serviço de Aplicativo para esse site. Se você quiser retornar à configuração do Azure Resource Manager, poderá fazer isso removendo a definição da configuração platform.configFilePath
para nulo.
Referência do arquivo de configuração
Todos os segredos que serão referenciados do arquivo de configuração devem ser armazenados como configurações do aplicativo. Você pode nomear as configurações de qualquer maneira que desejar. Apenas certifique-se de que as referências do arquivo de configuração usem as mesmas chaves.
Os seguintes mostram as possíveis opções de configuração dentro do arquivo:
{
"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"
],
}
},
//...
}
}
}