2016-03-07 19 views
8

Usługa aplikacji Azure obejmuje rozwiązanie uwierzytelniania "pod klucz", w obszarze ostrzeżenia o autoryzacji/autoryzacji. Pozwoliło mi to skonfigurować uwierzytelnianie Active Directory dla interfejsu API aplikacji App Service. Mam skrypt informacyjny służący do konfigurowania środowiska i chciałbym zautomatyzować konfigurację uwierzytelniania usługi aplikacji za pomocą szablonu ARM lub poleceń Powershell.Czy można skryptować konfigurację uwierzytelniania usługi aplikacji Azure?

Próbowałem użyć strony resource.azure.com do przejrzenia konfiguracji mojej witryny, ale nie widziałem konfiguracji związanej z AD. Próbowałem szukać szablonów ARM, które to robią, bez powodzenia. Nie widziałem też komendy Menedżera zasobów Azure, która mogłaby to zrobić.

Czy ktoś wie, jak zautomatyzować konfigurację uwierzytelniania usługi aplikacji, w szczególności w celu uwierzytelniania AD?

Odpowiedz

6

Mogę odpowiedzieć sobie: to może rzeczywiście być skryptowane poprzez szablon ARM. (Początkowo próbowałem używać resources.azure.com, ale nie pokazałem wszystkich informacji konfiguracyjnych dla mojej witryny, wylogowanie się i ponowne zalogowanie sprawiło, że się zachowywało.) Rozwiązaniem jest wykorzystanie zagnieżdżonego zasobu w ramach zasobu Microsoft.Web/sites dla aplikacji internetowej Typ config i nazwisko web aby określić ustawienia, np:

{ 
    "type": "Microsoft.Web/sites", 
    ... 
    "resources": [ 
    { 
     "apiVersion": "2015-04-01", 
     "name": "web", 
     "type": "config", 
     "dependsOn": [ 
     "[resourceId('Microsoft.Web/sites', parameters('someName'))]" 
     ], 
     "properties": { 
     "siteAuthEnabled": true, 
     "siteAuthSettings": { 
      "enabled": null, 
      "httpApiPrefixPath": null, 
      "unauthenticatedClientAction": null, 
      "tokenStoreEnabled": null, 
      "allowedExternalRedirectUrls": null, 
      "defaultProvider": null, 
      "clientId": "REMOVED", 
      "clientSecret": null, 
      "issuer": "https://sts.windows.net/REMOVED/", 
      "allowedAudiences": null, 
      "additionalLoginParams": null, 
      "isAadAutoProvisioned": false, 
      "aadClientId": "REMOVED", 
      "openIdIssuer": "https://sts.windows.net/REMOVED/", 
      "googleClientId": null, 
      "googleClientSecret": null, 
      "googleOAuthScopes": null, 
      "facebookAppId": null, 
      "facebookAppSecret": null, 
      "facebookOAuthScopes": null, 
      "twitterConsumerKey": null, 
      "twitterConsumerSecret": null, 
      "microsoftAccountClientId": null, 
      "microsoftAccountClientSecret": null, 
      "microsoftAccountOAuthScopes": null 
     } 
     } 
    } 
    ] 
} 
2

Oto sposób, aby to zrobić za pomocą prostych poleceń PowerShell.

Po pierwsze, można zobaczyć bieżące ustawienia auth przy użyciu:

$rgName = "ResourceGroupName" 
$resourceType = "Microsoft.Web/sites/config" 
$resourceName = "service-name/authsettings" 

$resource = Invoke-AzureRmResourceAction -ResourceGroupName $rgName ` 
-ResourceType $resourceType -ResourceName $resourcename -Action list ` 
-ApiVersion 2015-08-01 -Force 

$resource.Properties 

Następnie można przyjmować wartości tych właściwości i wykorzystać je ustawić PropertyObject (właściwości podane poniżej odnoszą się do uwierzytelniania AAD, stosując główny serwis):

$PropertiesObject = @{ 
    "enabled" = "True"; 
    "unauthenticatedClientAction" = "0"; 
    "defaultProvider" = "0"; 
    "tokenStoreEnabled" = "True"; 
    "clientId" = "<your client ID here>"; 
    "issuer" = "https://sts.windows.net/<your AAD ID here>/"; 
    "allowedAudiences" = "{https://<service name>.azurewebsites.net}"; 
    "isAadAutoProvisioned" = "True"; 
    "aadClientId" = "<your client ID here>"; 
    "openIdIssuer" = "https://sts.windows.net/<your AAD ID here>/"; 
} 

New-AzureRmResource -PropertyObject $PropertiesObject ` 
-ResourceGroupName $rgName -ResourceType $resourceType ` 
-ResourceName $resourcename -ApiVersion 2015-08-01 -Force 

znalazłem łatwiej włączyć uwierzytelnianie w portalu, wyświetlić właściwości, a następnie użyć tych wartości, aby ustawić PropertyObject.

1

To jest teraz merged into Interfejs Azure CLI i jest dostępny pod az webapp auth.

Azure CLI Ref Page:

az webapp auth update --name 
         --resource-group 
         [--aad-allowed-token-audiences] 
         [--aad-client-id] 
         [--aad-client-secret] 
         [--aad-token-issuer-url] 
         [--action {AllowAnonymous, LoginWithAzureActiveDirectory, LoginWithFacebook, LoginWithGoogle, LoginWithMicrosoftAccount, LoginWithTwitter}] 
         [--allowed-external-redirect-urls] 
         [--enabled {false, true}] 
         [--facebook-app-id] 
         [--facebook-app-secret] 
         [--facebook-oauth-scopes] 
         [--google-client-id] 
         [--google-client-secret] 
         [--google-oauth-scopes] 
         [--microsoft-account-client-id] 
         [--microsoft-account-client-secret] 
         [--microsoft-account-oauth-scopes] 
         [--runtime-version] 
         [--slot] 
         [--token-refresh-extension-hours] 
         [--token-store {false, true}] 
         [--twitter-consumer-key] 
         [--twitter-consumer-secret]