2014-10-29 7 views
1

Azure 모바일 서비스 SDK를 사용하여 사회 공급자에 대해 사용자를 인증하는 Xamarin 모바일 앱이 있습니다. 토큰을 가져 와서 http 요청에 무기명 토큰으로 내 웹 API ASP.NET 응용 프로그램 (Azure Cloud Service로 배포하고 있음)을 연결합니다.웹 API 및 MVC에서 Azure 모바일 서비스 토큰 유효화

무기명 토큰의 유효성을 검사하고 내 ApiController에서 작동하려면 ClaimsIdentity를 받아야합니다. 모바일 서비스 .NET 백엔드 너겟 패키지를 사용해야합니까? 내가 어떻게 할 수있는?

편집 :

  • 설치된 모바일 서비스 .NET 백엔드 키에 대한 MS_MobileServiceName

  • 설정 appSettings는 값을 패키지 nuget 웹 API 컨트롤러

    추가 빈 ASP.NET 응용 프로그램을 만든

    1. , MS_MasterKey, Azure 관리 콘솔의 MS_ApplicationKey 값

    2. 세트 [AuthorizeLevel (AuthorizationLevel.User)] 내 ApiController 내 HttpGet 작동 에

    3. 캐스트 사용자 ServiceUser

    4. 는 푸른 모바일 서비스 SDK

    5. 통해 구글 인증에서 무기명 토큰을 HTTP 요청 만들기
    6. 사용자가 null입니다!

  • 답변

    0

    사용하여 API의 메소드에

    [AuthorizeLevel(AuthorizationLevel.Anonymous)] 
    
    [AuthorizeLevel(AuthorizationLevel.User)] 
    

    어떤 역할 당신이 원하는에 따라 유효성을 검사하는 등의 속성.

    그런 다음 AuthorizationLevel 익명이 아닌 경우, 방법에서 현재 사용자를 얻을 수

    var currentUser = User as ServiceUser; 
    

    를 사용합니다.

    그리고 필요한 경우 AppSettings를 설정하십시오. localhost에서 MobileService를 테스트하는 경우 MasterKey 및 ApplicationKey를 변경하십시오.

    <appSettings> 
        <!-- Use these settings for local development. After publishing to 
        Mobile Services, these settings will be overridden by the values specified 
        in the portal. --> 
        <add key="MS_MobileServiceName" value="[NAME HERE]" /> 
        <add key="MS_MasterKey" value="[INSERT HERE]" /> 
        <add key="MS_ApplicationKey" value="[INSERT HERE]" /> 
        <add key="MS_MicrosoftClientID" value="Overridden by portal settings" /> 
        <add key="MS_MicrosoftClientSecret" value="Overridden by portal settings" /> 
        <add key="MS_FacebookAppID" value="Overridden by portal settings" /> 
        <add key="MS_FacebookAppSecret" value="Overridden by portal settings" /> 
        <add key="MS_GoogleClientID" value="Overridden by portal settings" /> 
        <add key="MS_GoogleClientSecret" value="Overridden by portal settings" /> 
        <add key="MS_TwitterConsumerKey" value="Overridden by portal settings" /> 
        <add key="MS_TwitterConsumerSecret" value="Overridden by portal settings" /> 
        <add key="MS_AadClientID" value="Overridden by portal settings" /> 
        <add key="MS_AadTenants" value="Overridden by portal settings" /> 
        <!-- When using this setting, be sure to also set the Notification Hubs connection 
        string named "MS_NotificationHubConnectionString". --> 
        <add key="MS_NotificationHubName" value="Overridden by portal settings" /> 
        <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://[your namespace].servicebus.windows.net;SharedSecretIssuer=owner;SharedSecretValue=[your secret]" /> 
        </appSettings> 
    
    +0

    확실히 WebApiConfig에서 인증 공급자를 설정하고 내 마스터 키를 어딘가에 두어야합니까? –

    +0

    NuGet의 Azure 모바일 서비스 .NET 백엔드 패키지가 필요합니다. 마스터 및 ApplicationKey는 Web.Config에 저장됩니다. 하지만 그게 전부입니다. –

    +0

    그렇게하기위한 코드 예제를 제공해 주시겠습니까? WebApiConfig에 등록하는 방법을 찾지 못했습니다. –