How to resolve an Azure REST API request?

I am creating a program to reset the CDN cache. And so I did as the documentation said that I still get the following:

{"error": {"code": "AuthenticationFailedInvalidHeader", "message": "Authentication failed. The header" Authorization "was specified in an invalid format." }}

Thus, it is basically said that the authentication token itself is in the wrong format (not erroneous or expired). Despite the fact that I did this with documentation.

My request-response stream looks like this (I obfuscated the real data):

REQUEST POST /subscriptions/29bdq1a7-348b-48fe-b9e6-b90c432892ff/resourceGroups/cdn-4/providers/Microsoft.Cdn/Profiles/CDN-3-Premium/endpoints/custom-endpoint.azureedge.net/purge?api-version=2015-06-01 HTTP/1.1 Content-Length: 90 User-Agent: GuzzleHttp/6.1.1 curl/7.35.0 PHP/7.0.2-2+deb.sury.org~trusty+1 Host: management.azure.com Authorization: SharedAccessSignature uid=56c6d48a66904d02ce030003&ex=2017-02-19T11:41:00.0000000Z&sn=9wBsmFuP1ps01rt8nVlvsiAIdJMOqNsmGaiXUlfT35RxOvWAjHHcSIQdJA8v9wGvX4bJgX5fu1QyqVG6y9iQ6Q== Content-Type: application/json { "ContentPaths": [ "/uploads/static/ads_en.json", "/pic2.jpg" ] } RESPONSE HTTP/1.1 401 Unauthorized Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 WWW-Authenticate: Bearer authorization_uri="https://login.windows.net/c87x6f33-af21-4461-a5b1-29647d8e9281", error="invalid_token", error_description="The authentication scheme of SharedAccessSignature is not supported." x-ms-failure-cause: gateway x-ms-request-id: 3514027b-e731-411c-b8es-cdf77d636284 x-ms-correlation-request-id: 3514137b-e731-411c-b8ee-cdf77d636284 x-ms-routing-request-id: WESTEUROPE:20160219T110919Z:3514037b-e731-411c-b7ee-cdf77d636184 Strict-Transport-Security: max-age=31536000; includeSubDomains Date: Fri, 19 Feb 2016 11:09:19 GMT Connection: close Content-Length: 150 {"error":{"code":"AuthenticationFailedInvalidHeader","message":"Authentication failed. The 'Authorization' header is provided in an invalid format."}}\ 

Can you suggest a way to solve it?

+5
source share
2 answers

Part of the confusion, I think, is that there are two different Azure Management APIs (and it has nothing to do with the Azure API Management).

There are Service Management APIs and Azure Resource Manager (ARM) APIs.

The base URL you are using is for the ARM API, and they do not use shared signatures. Here's the best article on calling an ARM API - http://blog.davidebbo.com/2015/12/calling-arm-using-plain-rest.html

+1
source

To avoid stupid authentication, you can use the C # SDK https://github.com/Azure/azure-sdk-for-net/tree/AutoRest/src/ResourceManagement/Cdn

You can use nuget to configure it.

+1
source

Source: https://habr.com/ru/post/1243388/


All Articles