Microsoft Azure API доступа к токену не работает с cURL/Ruby, но работает с powershell
Я просто пытаюсь получить токен доступа по идентификатору клиента, секрету клиента и идентификатору клиента. Следующая команда 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" }
Но этот локон не работает
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"
Ни этот рубиновый скрипт
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)
Я перехожу по этой ссылке. Любые подсказки, почему ни один из curl / ruby не работает? заранее спасибо
1 ответ
Я попытался воспроизвести вашу проблему успешно, и обнаружил, что проблема была вызвана скручиванием без OpenSSL и запросом Typhoeus без установки ssl_verifypeer: false
,
Пожалуйста, следуйте этому, чтобы проверить через curl --version
и установить библиотеки openssl в вашей среде.
Вот мой пример кода.
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
Надеюсь, поможет.