2017-04-14 2 views
0

J'essaie simplement d'obtenir un jeton d'accès de l'ID du client, du secret client et de l'ID du locataire. Suite à la commande powershell fonctionne avec succèsMicrosoft Azure get l'API du jeton d'accès ne fonctionne pas avec cURL/Ruby mais fonctionne avec powershell

Invoke-RestMethod -Uri https://login.microsoftonline.com/TENANT/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://management.core.windows.net/"; "client_id" = "CLIENTID"; "client_secret" = "SECRET" } 

Mais cette boucle ne fonctionne pas

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=client_credentials&resource=https://management.core.windows.net/&client_id=CLIENTID&client_secret=SECRET" "https://login.microsoftonline.com/TENANT/oauth2/token?api-version=1.0" 

Ni ce script Ruby

require 'json' 
require 'typhoeus' 

url = 'https://login.microsoftonline.com/TENANT/oauth2/token?api-version=1.0' 
params = "grant_type=client_credentials&resource=https://management.core.windows.net/&client_id=CLIENTID&client_secret=SECRET" 
HEADERS = { 
"Content-Type" => "application/x-www-form-urlencoded" 
} 
resp = Typhoeus::Request.post(url, body: params, headers: HEADERS) 

Je suis le lien suivant this. Des indices pourquoi ni curl/ruby ​​ne fonctionne? Merci à l'avance

+0

Quel est le message d'erreur? – ehoffmann

Répondre

0

j'ai essayé de reproduire votre problème avec succès, et j'ai découvert que le problème était dû à boucle sans demande OpenSSL et Typhée sans réglage ssl_verifypeer: false.

Veuillez donc suivre this pour vérifier via curl --version et installer les bibliothèques openssl sur votre environnement.

Voici mon exemple de code.

require "typhoeus" 

url = 'https://login.microsoftonline.com/<tanet-id>/oauth2/token?api-version=1.0' 
params = "grant_type=client_credentials&resource=https://management.core.windows.net/&client_id=<client-id>&client_secret=<client-key>" 
headers = { 
    "Content-Type" => "application/x-www-form-urlencoded" 
} 
request = Typhoeus.post(url, body: params, headers: headers, ssl_verifypeer: false) 
puts request.code, request.body 

Espérons que ça aide.

+0

Malheureusement, cela n'a pas aidé. Même avec ssl_verifypeer: option false. Il reconnaît toujours mon client_secret comme non valide. J'ai essayé ma version d'openssl et montre 'OpenSSL/1.0.1f'. Une autre erreur dans mon code? @Peter Pan – Gagan93

+0

@ Gagan93 Rien. Sans l'option 'ssl_verifypeer: false', j'ai obtenu le même résultat que le vôtre. –

+0

Pan - Vous voulez dire qu'en utilisant cette option, vous avez aussi l'erreur (et non le jeton généré)? – Gagan93