Dans Visual studio 2015, lorsque je publie mon site Web/Webapp sur Azure, je peux créer automatiquement un nouveau profil de publication (en entrant mes informations d'identification de compte Azure personnelles), cela crée le .pubxml
et .pubxml.user
des dossiers. Le nom d'utilisateur de déploiement est au format "$websiteName
"et le mot de passe est représenté par une longue série de puces. Le .pubxml.user
Le fichier contient le mot de passe réel, qui est chiffré de telle sorte que seul mon Visual Studio peut le lire, en le déchiffrant avec mon compte d'utilisateur Windows local - en tant qu'humain, je n'ai aucun moyen de le voir. Également .user
les fichiers sont exclus du contrôle de code source (mais le .pubxml
les fichiers sont inclus dans le contrôle de source).
Lorsqu'une autre personne de mon équipe tente de déployer le site Web, elle obtient les mêmes paramètres de déploiement, mais est invitée à entrer le mot de passe pour le "$website
". Je ne sais pas d'où me procurer ce mot de passe - le portail de gestion Azure ne l'affiche pas.
Si la personne ouvre le portail et choisit de réinitialiser le profil de publication, elle peut télécharger un nouveau .pubxml
fichier contenant un mot de passe chiffré que je comprends uniquement que leurs informations d'identification Azure personnelles peuvent déchiffrer, mais qui interrompt le déploiement pour moi et les autres utilisateurs, car maintenant leurs mots de passe enregistrés (dans le .user
fichiers) est invalidé.
Je comprends qu'il s'agit d'un nom d'utilisateur + mot de passe différent du panneau "Informations d'identification de déploiement" sur le portail Azure, car actuellement, le site Web n'a pas défini d'informations d'identification de déploiement, en plus si je devais en définir un, le nom d'utilisateur est différent. Le portail indique que ces informations d'identification sont de toute façon pour l'accès FTP - aucune mention n'est faite de la fonctionnalité Web Deploy.
Vous pouvez obtenir les informations d'identification actuelles via le portail ou PowerShell/CLI.
Sur le portail, il y a un bouton en haut du panneau d'application Web pour télécharger le profil de publication (pas le panneau d'informations d'identification de déploiement, mais le panneau d'application Web principal).
Tout d'abord, assurez-vous que les applets de commande Azure PowerShell sont installées: https://docs.Microsoft.com/en-us/powershell/Azure/install-azurerm-ps?view=azurermps-6.3.
$PSVersionTable.PSVersion
. Assurez-vous que la sortie indique que vous disposez de la version majeure 5 ou ultérieure. Si cette commande vous donne une erreur, vous exécutez PowerShell v1 qui est ancien à ce stade.Install-Module -Name AzureRM
(vous pouvez être invité à mettre à jour NuGet, auquel cas vous devez)Import-Module AzureRM
Connect-AzureRmAccount
et terminer le processus d'authentification.Exécutez cette commande pour enregistrer le profil de publication dans un fichier sur le disque (des sauts de ligne ajoutés pour la lisibilité, en réalité, mettez cela sur une seule ligne). Ensemble $WebAppName
et $ResourceGroupName
selon le cas:
Get-AzureRmWebAppPublishingProfile
-ResourceGroupName $ResourceGroupName
-Name $WebAppName
-OutputFile creds.xml
-Format WebDeploy
Le .publishsettings
fichier est un fichier XML (sans saut de ligne). À l'intérieur, vous trouverez un document avec cette structure. Recherchez l'attribut userPWD
dans le <publishProfile>
élément avec publishMethod="MSDeploy"
. N'utilisez pas les informations d'identification FTP (dans le deuxième <publishProfile>
element) car le nom d'utilisateur est différent.
La valeur d'attribut userPWD
n'est pas chiffrée, mais est le codage base64 (ou base62?) D'octets complètement aléatoires. Vous pouvez copier et coller cette valeur directement dans l'invite d'informations d'identification dans l'assistant de publication de Visual Studio.
<publishData>
<publishProfile
profileName="SITE - Web Deploy"
publishMethod="MSDeploy"
publishUrl="SITE.scm.azurewebsites.net:443"
msdeploySite="SITE"
userName="$SITE"
userPWD="YOUR PASSWORD IS HERE" <-- This attribute here
destinationAppUrl="http://SITE.azurewebsites.net"
SQLServerDBConnectionString=""
mySQLDBConnectionString=""
hostingProviderForumLink=""
controlPanelLink=""
webSystem="WebSites"
>
<databases />
</publishProfile>
<publishProfile
profileName="SITE - FTP"
publishMethod="FTP"
publishUrl="ftp://SITE.ftp.azurewebsites.windows.net/site/wwwroot"
ftpPassiveMode="True"
userName="SITE\$SITE"
userPWD="FTP PASSWORD IS HERE"
destinationAppUrl="http://SITE.azurewebsites.net"
SQLServerDBConnectionString=""
mySQLDBConnectionString=""
hostingProviderForumLink=""
controlPanelLink=""
webSystem="WebSites"
>
<databases />
</publishProfile>
</publishData>
Si vous n'êtes pas familier avec PowerShell, vous pouvez essayer l'instruction ci-dessous pour obtenir le nom d'utilisateur et le mot de passe de déploiement à l'aide de Azure cli .
az webapp deployment list-publishing-profiles --name your_web_app_name --resource-group your_resource_group
Vous ajoutez également --query pour récupérer le "userPWD"
az webapp deployment list-publishing-profiles --name your_web_app_name --resource-group your_resource_group --query '[].userPWD' -o tsv
La sortie sera comme
oMarhPTTJc6F7muHfz11232342342342342420tv5Lwikf1Xc