401 erreur non autorisée avec WebDeploy en utilisant un utilisateur non administrateur
Est-il possible d'utiliser ms web deploy pour déployer une application web sur un hôte distant à partir de ligne de commande avec un utilisateur non administrateur ?
j'ai suivi tous les points du Guide de Microsoft pour installer et configurer Web Deploy . Mon but est d'être capable de faire un déploiement Web à distance avec un utilisateur IIS / utilisateur non administrateur.
après avoir fait toutes les étapes décrites sous installer et configurer web deploy pour les déploiements non-administrateur , je reçois les messages de log suivants (indiquant que tout est OK):
Publish enabled for 'deploy_user'
Granted 'deploy_user' full control on 'C:inetpubwwwroot'
Successfully created settings file 'C:Users...Desktopdeploy_user_Default Web Site.PublishSettings'
ensuite, quand je de ma machine locale essayer d'exécuter la commande suivante:
.my_deploy_package.cmd /M:https://machine_name:8172/msdeploy.axd -allowUntrusted /U:deploy_user /P:deploy_password /A:Basic /T
je reçois un message d'erreur disant: erreur: la télécommande le serveur a renvoyé une erreur: (401) non autorisé.
si j'entre dans le visualiseur D'événements sur la machine cible > vues personnalisées > événements Administratove, je vois une erreur de "correspondance" avec ce message:
IISWMSVC_AUTORIZATION_SERVER_NOT_ALLOWED
seuls les administrateurs Windows sont autorisés à se connecter à l'aide d'un serveur connexion. Les autres utilisateurs doivent utiliser le 'Se connecter au Site ou Application ' tâche à accomplir capable de se connecter.
Processus:WMSvc Utilisateur=deploy_user
cette erreur est la même que celle décrite dans cette question . Et la réponse acceptée suggère que ce que j'ai déjà fait est la bonne approche.
j'ai essayé plusieurs solutions de rechange suggérées, comme ce , mais rien ne semble aider. Le Service de gestion est fixé à autoriser les connexions à distance (Windows et IIS Manager), et j'ai lancé la configuration pour un utilisateur Windows intégré (non administrateur) et un utilisateur IIS Manager, et toujours la même erreur. Dès que j'ai exécuté la commande deploy avec un utilisateur administrateur cependant, il réussit.
je suis autorisés à se connecter à distance à travers le IIS gui avec ma non-administrateur deploy_user de l'utilisateur (dans IIS: se Connecter à un Site > [url du serveur]/[nom du site] > deploy_user / deploy_password ), indiquant que les droits et les règles nécessaires sont configurés. C'est cependant quand j'essaie d'exécuter la ligne de commande deploy script - avec le même utilisateur - qu'elle échoue.
et si elle réellement est comme le message d'erreur indique, que tout utilisateur non-administrateur peut seulement utiliser Se connecter au Site ou à L'Application via IIS Manager, ce qui est alors la manière recommandée de se déploie - t-il comme cela à partir de la ligne de commande/d'un serveur de compilation? Je ne veux pas vraiment entrer le nom d'utilisateur / mot de passe d'un utilisateur administrateur en clair dans la configuration du serveur de compilation...
une option que j'ai trouvé qui fonctionne, est que si votre serveur de compilation et la machine que vous essayez de déployer pour avoir un répertoire actif commun (ou d'autres moyens de partager les utilisateurs), vous pouvez sauter le drapeau /A:Basic
et laisser le nom d'utilisateur et le mot de passe tout à fait. Vous devez seulement vous assurer que le l'utilisateur qui exécute le déploiement dispose également de droits d'administrateur sur la cible de déploiement. Cependant, dans un cas pour nous, le serveur de construction et la cible de déploiement n'ont pas une base d'utilisateurs commune, donc ce n'est pas une option et nous sommes de retour au nom d'utilisateur/mot de passe en clair-ce qui n'est pas souhaitable du tout.
4 réponses
étant donné que l'utilisateur n'a le droit D'administrateur qu'au niveau du site et non au niveau racine de L'IIS, vous devez ajouter le nom du site.
au Lieu de https://machine_name:8172/msdeploy.axd
vous devez avoir https://machine_name:8172/msdeploy.axd?site=[MySiteName]
.
quand ce n'est pas ajouté, msdeploy
essaie d'accéder au site par la racine de IIS. Avec le paramètre ajouté, le site est accédé directement, et les droits d'administration sur le site spécifique sont suffisants.
essayez d'exécuter cela directement depuis la ligne de commande
msdeploy.exe
-source:package='…\DemoProject.zip'
-dest:auto,
computerName='https://TESTWEB1:8172/MSDeploy.axd?site=DemoSite',
userName='FABRIKAM\User',
password='Pa$$w0rd',
authtype='Basic'
-verb:sync
-setParamFile:"…\DemoProject.SetParameters.xml"
-allowUntrusted
remplacer DemoProject.zip
par votre paquet, TESTWEB1
par votre serveur. Changer également username, password, DemoSite
et DemoProject.SetParameters.xml
en conséquence
Cité de ici
en supposant que vous n'avez pas utilisé le MSI pour installer et que vous avez ces étapes citées ci-dessous correctement installées et configurées, assurez-vous que WMSvc est configuré correctement sur le serveur. Voyez si cette réponse acceptée vous aide avec cela: https://stackoverflow.com/a/4834248/463478
2.Le MSI n'installera pas le composant de gestionnaire du service de gestion Web si le service de gestion Web n'est pas installé; le gestionnaire composant est nécessaire pour les déploiements non-administrateur . Windows la composante IIS, y compris le service de gestion, devrait être installée en premier. pour activer le gestionnaire de composant à installer.
3.Le MSI ne configurera pas le service de gestion Web pour permettre des déploiements sans administrateur si PowerShell v2 n'est pas installé. This l'étape de configuration inclut la création de règles de délégation dans le serveur IIS Administration.fichier de configuration qui permettent à un administrateur les utilisateurs à utiliser Déploiement Web . PowerShell v2 est intégré sur Windows Server 2008 R2 mais peut nécessiter une mise à jour de Windows Pour Windows Server 2008. Alternativement les règles de délégation peuvent être ajoutées manuellement après l'installation de .
deux choses m'ont vraiment aidé de ce post.
- spécifiant le nom du site
- paramétrant le type d'authentification à basic.
aussi mon nom d'application web avait des espaces dedans et j'ai continué à recevoir une erreur quand j'ai essayé de spécifier l'url du service comme ce https://machine_name:8172/msdeploy.axd?site=my%20web%20app
j'ai pu résoudre ceci mon réglage du nom du site en utilisant le msdeploy supplémentaire.pavillon exe "-setParam:name='IIS Web Application Name',value='my web app'"
ma commande de travail est:
my_deploy_package.cmd/ M: https://machine_name:8172/msdeploy.axd / U: deploy_user/P: deploy_password /A: basic - allowuntrust " - setParam: name='IIS Web Application Name', value= 'my web app' "