Мобильное приложение Azure с использованием аутентификации Xamarin

Я использую проверку подлинности Xamarin Forms с Auth0. Серверная служба - это мобильное приложение Azure. Я пытаюсь передать токен авторизации обратно в службу через:

            MobileServiceUser usr = new MobileServiceUser(User.UserName);
            usr.MobileServiceAuthenticationToken = User.jwt;
            App.client.CurrentUser = usr;

Мне еще предстоит справиться с этим в моем приложении Azure. Когда я передаю пользователя, как указано выше, я обнаруживаю следующую ошибку в проекте Xamarin:

Вызвано: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: не удалось выполнить запрос. (Неавторизованный)

Фактически это то, что я объявил анонимный доступ в своем контроллере:

[AuthorizeLevel(AuthorizationLevel.Anonymous)]
public class MovementController : TableController<MoveHeaderDto>

Как я могу обрабатывать MobileServiceUser в моем мобильном приложении Azure?


person Randeep Singh    schedule 22.07.2015    source источник
comment
У меня такая же проблема с Xamarin.Forms в проекте Windows81, когда я вызываю LoginAsync с поставщиком и сохраненным токеном.   -  person Loul G.    schedule 22.07.2015


Ответы (1)


Я считаю, что ошибка 401 связана с тем, что токен не соответствует ожидаемому формату и не может быть проверен.

Свойство MobileServiceAuthenticationToken - это JWT, выпущенный самим шлюзом мобильных приложений. Вам нужно будет вызвать перегрузку метода loginAsync (), которая принимает дополнительный параметр токена, передавая JWT, полученный от Auth0.

Метод loginAsync установит MobileServiceUser, и он будет прикреплен к вызовам, поступающим в вашу службу. Обратите внимание, что для форм Xamarin вам необходимо иметь настраиваемое средство визуализации, чтобы использовался правильный элемент представления для платформы. Это похоже на то, что это сообщение в блоге предназначено для библиотеки ADAL.

person mattchenderson    schedule 22.07.2015
comment
Таким образом, мы можем использовать только OAuth 2.0 для передачи заголовка XUMO-Auth из приложения в мобильное приложение для использования встроенной аутентификации. Даже в статье здесь говорится, что он еще не поддерживает другие шлюзы: azure.microsoft.com/en-us/documentation/articles/ - person Randeep Singh; 23.07.2015
comment
@mattchenderson, что вы предлагаете, это сначала войти в систему с помощью auth0, а затем использовать токен из auth0 для входа с помощью клиента Azure? Я предполагаю, что это не позволяет настраивать аутентификацию с использованием auth0, поскольку перегрузка loginAsync, о которой вы говорите, также требует поставщика. - person frmi; 12.06.2016