Konfiguracja oparta na plikach w uwierzytelnianiu usługi aplikacja systemu Azure Service
W przypadku uwierzytelniania usługi App Service ustawienia uwierzytelniania można skonfigurować za pomocą pliku. Może być konieczne użycie konfiguracji opartej na plikach do korzystania z niektórych funkcji w wersji zapoznawczej uwierzytelniania/autoryzacji usługi App Service przed udostępnieniem ich za pośrednictwem interfejsów API usługi Azure Resource Manager .
Ważne
Pamiętaj, że ładunek aplikacji i w związku z tym ten plik może przechodzić między środowiskami, tak jak w przypadku miejsc. Prawdopodobnie potrzebujesz innej rejestracji aplikacji przypiętej do każdego miejsca, a w takich przypadkach należy nadal używać standardowej metody konfiguracji zamiast używać pliku konfiguracji.
Włączanie konfiguracji opartej na plikach
Utwórz nowy plik JSON konfiguracji w katalogu głównym projektu (wdrożony w folderze C:\home\site\wwwroot w aplikacji internetowej/funkcji). Wypełnij żądaną konfigurację zgodnie z dokumentacją konfiguracji opartą na plikach. W przypadku modyfikowania istniejącej konfiguracji usługi Azure Resource Manager należy przetłumaczyć właściwości przechwycone w
authsettings
kolekcji na plik konfiguracji.Zmodyfikuj istniejącą konfigurację przechwyconą w interfejsach API usługi Azure Resource Manager w obszarze
Microsoft.Web/sites/<siteName>/config/authsettingsV2
. Aby go zmodyfikować, możesz użyć szablonu usługi Azure Resource Manager lub narzędzia, takiego jak Azure Resource Explorer. W kolekcji authsettingsV2 ustaw dwie właściwości (możesz usunąć inne):- Ustaw
platform.enabled
wartość "true" - Ustaw
platform.configFilePath
nazwę pliku (na przykład "auth.json")
- Ustaw
Uwaga
Format dla platform.configFilePath
różnych platform jest różny. W systemie Windows obsługiwane są ścieżki względne i bezwzględne. Zalecany jest względny. W przypadku systemu Linux obsługiwane są obecnie tylko ścieżki bezwzględne, więc wartość ustawienia powinna mieć wartość "/home/site/wwwroot/auth.json" lub podobna.
Po wprowadzeniu tej aktualizacji konfiguracji zawartość pliku będzie używana do definiowania zachowania uwierzytelniania/autoryzacji usługi App Service dla tej witryny. Jeśli kiedykolwiek chcesz powrócić do konfiguracji usługi Azure Resource Manager, możesz to zrobić, usuwając zmianę ustawienia platform.configFilePath
na null.
Dokumentacja pliku konfiguracji
Wszystkie wpisy tajne, do których będą odwołyy się odwołania z pliku konfiguracji, muszą być przechowywane jako ustawienia aplikacji. Możesz nazwać ustawienia dowolnych elementów. Upewnij się, że odwołania z pliku konfiguracji używają tych samych kluczy.
Następujące opcje konfiguracji są wyczerpane w pliku:
{
"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"
],
}
},
//...
}
}
}