Проверка токенов мобильных служб Azure в Web API и MVC

1

У меня есть мобильное приложение Xamarin, которое использует SDK Azure Mobile Services для аутентификации пользователя против социальных провайдеров. Я получаю токен и присоединяю его к http-запросу, попадающему в мое приложение ASP.NET для веб-приложений (которое я развертываю как Azure Cloud Service) в качестве маркера-носителя.

Мне нужно проверить маркер-носитель и получить ClaimsIdentity для работы с моим ApiController. Нужно ли мне использовать пакеты для мобильных приложений.NET Backend для этого? Как я могу?

РЕДАКТИРОВАТЬ:

  1. Создано пустое приложение ASP.NET Добавлен контроллер веб-API

  2. Установленный пакет мобильных приложений.NET Backend nuget

  3. Установить значения настроек приложения для ключей MS_MobileServiceName, MS_MasterKey, MS_ApplicationKey из значений в Azure Management Console

  4. Установите [AuthorizeLevel (AuthorizationLevel.User)] на мою операцию HttpGet в моем ApiController

  5. Передача пользователя в ServiceUser

  6. Создайте HTTP-запрос с маркером-носителем из Google Auth через Azure Mobile Service SDK

  7. Пользователь пуст!

Теги:
jwt
asp.net-web-api
azure-mobile-services

1 ответ

0

Используйте атрибуты, такие как

[AuthorizeLevel(AuthorizationLevel.Anonymous)]

[AuthorizeLevel(AuthorizationLevel.User)]

О методах в вашем API для проверки в зависимости от того, какую роль вы хотите.

Затем используйте

var currentUser = User as ServiceUser;

чтобы получить текущего пользователя в методе, если AuthorizationLevel не является анонимным.

При необходимости настройте свои AppSettings. Измените MasterKey и ApplicationKey, если вы тестируете MobileService на localhost.

 <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
    Ну, вам нужен бэкэнд-пакет Azure Mobile Services .NET от NuGet. Master и ApplicationKey хранятся в Web.Config. Но это все.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню