У меня есть мобильное приложение Xamarin, которое использует SDK Azure Mobile Services для аутентификации пользователя против социальных провайдеров. Я получаю токен и присоединяю его к http-запросу, попадающему в мое приложение ASP.NET для веб-приложений (которое я развертываю как Azure Cloud Service) в качестве маркера-носителя.
Мне нужно проверить маркер-носитель и получить ClaimsIdentity для работы с моим ApiController. Нужно ли мне использовать пакеты для мобильных приложений.NET Backend для этого? Как я могу?
РЕДАКТИРОВАТЬ:
Создано пустое приложение ASP.NET Добавлен контроллер веб-API
Установленный пакет мобильных приложений.NET Backend nuget
Установить значения настроек приложения для ключей MS_MobileServiceName, MS_MasterKey, MS_ApplicationKey из значений в Azure Management Console
Установите [AuthorizeLevel (AuthorizationLevel.User)] на мою операцию HttpGet в моем ApiController
Передача пользователя в ServiceUser
Создайте HTTP-запрос с маркером-носителем из Google Auth через Azure Mobile Service SDK
Пользователь пуст!
Используйте атрибуты, такие как
[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>