2016-03-07 32 views
8

Il servizio app di Azure include una soluzione di autenticazione chiavi in ​​mano, sotto il pannello delle impostazioni di autenticazione/autorizzazione. Questo mi ha permesso di configurare l'autenticazione di Active Directory per il mio web API del servizio app. Ho uno script di provisioning per la configurazione del mio ambiente e vorrei automatizzare la configurazione dell'Autent Service Service, tramite un modello ARM o tramite i comandi di PowerShell.È possibile eseguire lo script della configurazione dell'autenticazione del servizio app di Azure?

Ho provato a utilizzare resource.azure.com per visualizzare la configurazione del mio sito ma non sono riuscito a visualizzare la configurazione relativa a AD. Ho provato a cercare i modelli ARM che fanno questo, senza successo. Inoltre, non è stato possibile visualizzare un comando di Azure Resource Manager che potrebbe eseguire questa operazione.

Qualcuno sa come automatizzare la configurazione dell'Autent Service Service, in particolare per l'autenticazione AD?

risposta

6

Posso rispondere io stesso: questo può essere effettivamente copiato tramite un modello ARM. (Inizialmente avevo provato ad usare resources.azure.com ma non aveva mostrato tutte le informazioni di configurazione per il mio sito, la disconnessione e il reinserimento lo rendevano funzionante.) La soluzione è usare una risorsa nidificata nella risorsa Microsoft.Web/sites per la tua app web di tipo config e il nome web per specificare le impostazioni, ad esempio:

{ 
    "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

Ecco un modo per farlo utilizzando i comandi PowerShell diritte.

In primo luogo, è possibile visualizzare le impostazioni auth correnti utilizzando:

$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 

Poi, si può prendere i valori di tali proprietà e li usa per impostare la PropertyObject (proprietà illustrate di seguito si riferiscono a l'autenticazione AAD, utilizzando un servizio principale):

$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 

ho trovato più facile per abilitare l'autenticazione nel portale, visualizzare le proprietà, quindi utilizzare tali valori per impostare il PropertyObject.

1

Questo è ora merged into CLI di Azure ed è disponibile con 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]