2016-10-24 2 views
0

J'essaie d'accéder à une API Web pour Sonarqube sur notre serveur local. Les exemples de la documentation de Sonarqube sont tous basés sur curl et j'essaie de les traduire en PowerShell, Invoke-WebRequest ou Invoke-RestMethod. J'ai des problèmes avec les informations d'identification. Je continue d'obtenir une erreur 401 non autorisé. J'ai passé en revue tous les messages que je peux trouver en faisant ceci et je ne vois pas une réponse complète complète sur la façon de faire ceci.Invoke-RestMethod ou Invoke-WebRequest version de curl?

Voici ce que je suis en maintenant:

$user='myUserid' 
$password='myPassword' 
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd) 
$uri="http://myServer.ad1.prod:9000/api/properties" 
Invoke-RestMethod -Uri $uri -Credential $cred -Method Get 

Et la réponse est:

Invoke-RestMethod : {"err_code":401,"err_msg":"Unauthorized"} 

J'ai couru la commande boucle tel que défini dans la documentation du produit original et cela fonctionne. Même ID utilisateur, même mot de passe, même URI, même méthode.

Quelqu'un peut-il conseiller?

Ma commande curl est:

curl -u myID:myPassword X GET http://myServer.ad.prod:9000/api/properties 
+0

Comment êtes-vous passer les informations d'identification avec 'curl'? –

+0

@AnsgarWiechers - voir l'édition éditée –

Répondre

2

Je pense que vous devez passer dans un titre comme celui-ci:

$username = "user" 
$password = "password" 
$authInfo = ("{0}:{1}" -f $username,$password) 
$authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) 
$authInfo = [System.Convert]::ToBase64String($authInfo) 
$headers = @{Authorization=("Basic {0}" -f $authInfo)} 

Invoke-RestMethod -Method Head -Uri "https://pathtowhatever" -ContentType 'text/json' -Headers $headers 
+0

C'est fait. Merci. –