2016-02-19 20 views
5

Tôi đang tạo một chương trình để xóa bộ nhớ cache CDN. Và vì vậy tôi đã làm như tài liệu nói rằng tôi vẫn có được điều này:Làm cách nào để ủy quyền yêu cầu Azure REST API?

{ "lỗi": { "code": "AuthenticationFailedInvalidHeader", "message":." Xác thực không thành tiêu đề 'Phép' được cung cấp trong một định dạng không hợp lệ. " } }

Vì vậy, về cơ bản, mã thông báo xác thực bị định dạng sai (không sai hoặc hết hạn). Mặc dù tôi đã làm như tài liệu gợi ý.

My dòng chảy Yêu cầu-đáp ứng trông như thế này (tôi obfuscated dữ liệu thực tế):

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."}}\ 

Bạn có thể đề nghị cách để giải quyết nó?

+0

Theo tài liệu nào? API REST có hỗ trợ SharedAccessSignatures không? –

+0

Vì vậy, tôi đã nghiên cứu hai nguồn sau: https://msdn.microsoft.com/en-us/library/azure/dn776326.aspx và https://msdn.microsoft.com/en-us/library/mt634451 .aspx –

+1

Liên kết đầu tiên là về quản lý API Azure (https://azure.microsoft.com/en-us/documentation/articles/api-management-key-concepts/), đây là một sản phẩm khác. Nó không phải là API Azure Rest. xem liên kết này để biết thêm thông tin: https://msdn.microsoft.com/en-us/library/azure/ee460782.aspx –

Trả lời

1

Một phần của sự nhầm lẫn mà tôi nghĩ là có hai API quản lý Azure riêng biệt (và không có gì để làm với Quản lý API Azure).

Có API "Quản lý dịch vụ" và API trình quản lý tài nguyên Azure (ARM).

URL cơ sở bạn đang sử dụng là dành cho API ARM và chúng không sử dụng Chữ ký truy cập được chia sẻ. Bài viết hay nhất về cách gọi API ARM trực tiếp là tại đây, http://blog.davidebbo.com/2015/12/calling-arm-using-plain-rest.html

1

Để tránh vô nghĩa xác thực, bạn có thể sử dụng C# SDK https://github.com/Azure/azure-sdk-for-net/tree/AutoRest/src/ResourceManagement/Cdn

Bạn có thể sử dụng NuGet để thiết lập nó.

+0

[Chỉ được bỏ qua cho liên kết chỉ trả lời] (http://meta.stackexchange.com/a/8259/171858). Một câu trả lời nên bao gồm trong câu trả lời chính nó mã có liên quan trong liên kết. –

Các vấn đề liên quan