2015-01-23 26 views
7

Tôi có thể sử dụng HttpClient của .NET để truy cập dịch vụ Azure Mobile không?Dịch vụ di động Azure, HttpClient, Ủy quyền

Làm cách nào để xác thực với dịch vụ của thiết bị di động được nướng trong custom Authentication/Authorization patterns bằng HttpClient?

này luôn trả về 401, bởi vì tôi không đi qua trong bất kỳ thông tin xác thực:

var client = new HttpClient();   
var response = client.GetAsync("http://localhost:49190/api/test").Result; 

Hơn nữa, làm thế nào mà khi tôi sử dụng Mobile Service Client, tại sao chìa khóa ứng dụng, chìa khóa vạn, hoặc sử dụng chìa khóa auth của tôi luôn luôn trở lại (401) Không được phép?

Chủ đầu tư:

var mobileClient = new MobileServiceClient("http://localhost:49190/", "[my key]"); 
var response = mobileClient.InvokeApiAsync("test").Result; 

Dịch vụ Side:

[AuthorizeLevel(AuthorizationLevel.Application)] 
public class TestController : ApiController 
{ 
    public ApiServices Services { get; set; } 

    // GET api/Test 
    public string Get() 
    { 
     Services.Log.Info("Hello from custom controller!"); 
     return "Hello"; 
    } 
} 

Trả lời

12

"? Tôi có thể sử dụng NET của HttpClient để đạt một dịch vụ Azure di động" Câu trả lời ngắn gọn là có. Cách đơn giản là thêm một này để các tiêu đề trên máy khách:

 var client = new HttpClient();   
     client.DefaultRequestHeaders.Add("X-ZUMO-APPLICATION", "[my key]"); 

Hãy cẩn thận mặc dù, nếu bạn đang sử dụng một phiên bản tại địa phương lưu trữ mà bạn sẽ muốn chắc chắn rằng bạn đã ...

  1. Buộc dịch vụ nghĩ rằng dịch vụ được lưu trữ để nó cho phép Xác thực.

    (trong App_Start/WebApiConfig.cs: config.SetIsHosted(true);

  2. Added phím ứng dụng và quan trọng tổng thể để web.config:

    <appSettings> 
    <add key="MS_MasterKey" value="[your master key]" /> 
    <add key="MS_ApplicationKey" value="[your app key]" /> 
    </appSettings> 
    

Without # 1, xác thực qua dịch vụ sẽ hoàn toàn bị bỏ qua, và do đó bạn không biết liệu bạn đã thêm xác thực vào máy khách đang hoạt động chưa. # 2, bạn có thể thêm khóa cho máy khách (bạn nhận được từ Azure) tất cả những gì bạn muốn, nhưng nó sẽ luôn trả về 401. Đây có thể là câu trả lời cho giây Câu hỏi thường gặp về việc sử dụng MobileServiceClient luôn trả lại 401.

Cuối cùng, có ba tiêu đề khác nhau mà bạn có thể sử dụng tổng cộng. Bạn sử dụng từng cái với từng cấp ủy quyền khác nhau. Từ này MSDN doc:

  • X-Zumo-ÁP DỤNG phím ứng dụng -Các của dịch vụ di động. Bạn phải chỉ định một khóa ứng dụng hợp lệ khi được yêu cầu để truy cập hoạt động của bảng. Đây là quyền truy cập hoạt động bảng mặc định.
  • X-ZUMO-AUTH - Mã thông báo xác thực do dịch vụ tạo cho người dùng được xác thực. Bạn phải chỉ định mã thông báo cho người dùng được xác thực khi được yêu cầu truy cập hoạt động của bảng.
  • X-ZUMO-MASTER - Khóa chính của dịch vụ. Bạn chỉ nên bao gồm khóa này khi truy cập quản trị viên được yêu cầu để truy cập hoạt động của bảng.

Lưu ý của tác giả: Cá nhân tôi gặp khó khăn khi làm việc này và với tài liệu giới hạn hoặc bị thiếu cho phong cách cụ thể này, tôi muốn viết câu hỏi này. Xin vui lòng cho tôi biết nếu bạn nghĩ rằng tôi nên thêm bất cứ điều gì.

+3

Mô tả vô cùng hữu ích và thiếu hụt nghiêm trọng từ bất kỳ tài liệu nào tôi có thể đào lên. Cảm ơn bạn! –

+0

Tôi lấy chìa khóa ở đâu? Không có cổng thông tin nào, cũng không phải web.config chứa bất kỳ khóa nào. – Anthony

+0

@Anthony Đã một thời gian kể từ khi tôi rối tung với điều này, nhưng tôi tin rằng tôi chỉ đặt chúng mình; nhưng tôi không thể chắc chắn. – Porschiey

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