2015-01-23 4 views
7

.NET의 HttpClient를 사용하여 Azure 모바일 서비스를 사용할 수 있습니까?Azure 모바일 서비스, HttpClient, 인증

HttpClient를 사용하여 custom Authentication/Authorization patterns에 구운 모바일 서비스 자체를 인증하려면 어떻게해야합니까? 내가 어떤 인증 자격 증명을 전달하고 있지 않다 때문에 항상 401을 반환이

:

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

을 또한, 나는 Mobile Service Client를 사용할 때 와서 어떻게, 왜 내 응용 프로그램 키, 마스터 키, 또는 사용자 인증 키를하지 항상 (401) 무단으로 반환?

클라이언트 :

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

서비스 측면 :

[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"; 
    } 
} 

답변

12

"? 내가 사용할 수 .NET의 HttpClient를 푸른 모바일 서비스를 적중" 짧은 대답은 '예'입니다. 당신은 당신이했는지 확인하는 것이 좋습니다 로컬 호스팅 버전을 사용하는 경우 ...

하지만

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

것은주의 : 간단한 방법은 클라이언트의 헤더에이를 추가하는 것입니다

  1. 서비스가 인증을 가능하게하도록 호스팅 된 것으로 생각하도록합니다.

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

  2. 추가의 Web.config에 응용 프로그램 키와 마스터 키 : # 1없이

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

서비스를 통해 인증 따라서 클라이언트에서 인증을 추가 한 방법이 작동하는지 알 수 없습니다 # 2가 없으면 원하는 모든 클라이언트 (Azure에서 가져온 것)에 키를 추가 할 수 있지만 항상 401을 반환합니다. 이것은 초에 대한 답변 일 수 있습니다. 항상 MobileServiceClient을 사용하여 401을 반환하는 것에 관해 게시했습니다.

마지막으로 총 3 개의 다른 헤더가 있습니다. 각기 다른 수준의 권한 부여를 사용합니다. 에서이 MSDN doc :

  • X-ZUMO-신청 모바일 서비스의 년 - 응용 프로그램 키를 누릅니다. 테이블 조작에 액세스해야 할 경우 유효한 어플리케이션 키를 지정해야합니다. 이것은 기본 테이블 조작 액세스 권한입니다.
  • X-ZUMO-AUTH - 인증 된 사용자에 대한 서비스 생성 인증 토큰. 테이블 조작에 액세스해야 할 때 인증 된 사용자의 토큰을 지정해야합니다.
  • X-ZUMO-MASTER - 서비스 마스터 키입니다. 테이블 조작에 액세스하려면 관리자 액세스가 필요한 경우에만이 키를 포함해야합니다.

필자는 개인적으로이 기능을 사용하는 데 어려움을 겪었으며,이 특정 스타일에 대한 제한된 문서 나 누락 된 설명서가 있으므로이 Q/A를 작성하려고했습니다. 내가 아무것도 추가해야한다고 생각하면 알려주세요.

+3

매우 유용한 설명과 문서에서 나는 빠져있었습니다. 고맙습니다! –

+0

어디서 열쇠를 얻을 수 있습니까? azure 포털이나 web.config에는 키가 없습니다. – Anthony

+0

@Anthony 내가 이것을 망쳐 놓은 지 오래다. 그러나 나는 확신 할 수 없다. – Porschiey

관련 문제