Partilhar via


Configuração baseada em ficheiros na autenticação Serviço de Aplicações do Azure

Com Serviço de Aplicações autenticação, as definições de autenticação podem ser configuradas com um ficheiro. Poderá ter de utilizar a configuração baseada em ficheiros para utilizar determinadas capacidades de pré-visualização de autenticação/autorização Serviço de Aplicações antes de serem expostas através das APIs Resource Manager do Azure.

Importante

Lembre-se de que o payload da aplicação e, por conseguinte, este ficheiro pode mover-se entre ambientes, tal como acontece com os blocos. É provável que queira ter um registo de aplicação diferente afixado a cada bloco e, nestes casos, deve continuar a utilizar o método de configuração padrão em vez de utilizar o ficheiro de configuração.

Ativar a configuração baseada em ficheiros

  1. Crie um novo ficheiro JSON para a sua configuração na raiz do seu projeto (implementado em D:\home\site\wwwroot na sua aplicação Web/de funções). Preencha a configuração pretendida de acordo com a referência de configuração baseada em ficheiros. Se modificar uma configuração existente do Azure Resource Manager, certifique-se de que traduz as propriedades capturadas na coleção para o authsettings ficheiro de configuração.

  2. Modifique a configuração existente, que é capturada nas APIs Microsoft.Web/sites/<siteName>/config/authsettingsV2de Resource Manager do Azure em . Para modificá-lo, pode utilizar um modelo do Azure Resource Manager ou uma ferramenta como o Azure Resource Explorer. Na coleção authsettingsV2, defina duas propriedades (pode remover outras):

    1. Definido platform.enabled como "verdadeiro"
    2. Definido platform.configFilePath como o nome do ficheiro (por exemplo, "auth.json")

Nota

O formato para platform.configFilePath varia entre plataformas. No Windows, são suportados caminhos relativos e absolutos. Relativa é recomendado. Para Linux, apenas os caminhos absolutos são suportados atualmente, pelo que o valor da definição deve ser "/home/site/wwwroot/auth.json" ou semelhante.

Depois de efetuar esta atualização de configuração, os conteúdos do ficheiro serão utilizados para definir o comportamento do Serviço de Aplicações Autenticação/Autorização para esse site. Se alguma vez quiser voltar à configuração do Azure Resource Manager, pode fazê-lo ao remover a alteração da definição platform.configFilePath para nula.

Referência do ficheiro de configuração

Todos os segredos que serão referenciados a partir do ficheiro de configuração têm de ser armazenados como definições da aplicação. Pode atribuir o nome que desejar às definições. Certifique-se apenas de que as referências do ficheiro de configuração utilizam as mesmas chaves.

O seguinte esgota possíveis opções de configuração no ficheiro:

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

Mais recursos