Как проверить подлинность в службах Mobile Services (службы для мобильных устройств)

Для знакомства с возможностями платформы  вы можетеактивировать Windows Azure бесплатно!

Тема практической работы — проверка подлинности пользователей служб Windows Azure для мобильных устройств из вашего приложения. Учимся добавлять функцию проверки подлинности в проект быстрого запуска с помощью поставщика удостоверений, который поддерживается службами Mobile Services. После успешной проверки подлинности и авторизации в Mobile Services на экране отображается значение идентификатора пользователя.

При выполнении практической работы рассмотрим следующие основные этапы проверки подлинности в вашем приложении:

  1. Регистрация приложения для выполнения проверки подлинности и настройка служб Mobile Services
  2. Разрешения на работу с таблицами для прошедших проверку пользователей
  3. Добавление функции проверки подлинности в приложение

Практическая работа построена на основе проекта быстрого запуска служб Mobile Services. Предварительно необходимо выполнить практическую работу Как начать работать со службами Mobile Services.

Для успешного выполнения практической работы требуются Eclipse и Android версии 4.2 или выше.

Регистрация приложения для выполнения проверки подлинности и настройка служб Mobile Services

Чтобы проверить подлинность пользователя, зарегистрируйте свое приложение с помощью поставщика удостоверений. Затем зарегистрируйте в Mobile Services секретный ключ клиента, полученный от поставщика.

1. Войдите на портал управления Windows Azure, нажмите Mobile Services и выберите свою мобильную службу.

2. Нажмите вкладку Dashboard (Панель мониторинга) и запишите значение Site URL (URL — адрес сайта).

Возможно, вам потребуется указать этот адрес поставщику удостоверений при регистрации приложения.

1. Выберите поддерживаемого поставщика удостоверений из приведенного ниже списка и выполните следующие операции для регистрации приложения:

Не забудьте записать идентификатор клиента и секретный ключ, полученный вами от поставщика.

Примечания по безопасности

Секретный ключ, полученный вами от поставщика, используется в целях безопасности. Никому не сообщайте его и не указывайте в своем приложении.

4. В портале управления нажмите вкладку Identity (Удостоверение), введите идентификатор приложения и секретный ключ, полученные от поставщика удостоверений, и нажмите Save (Сохранить).

Ваша мобильная служба и приложение готовы к работе с выбранным поставщиком проверки подлинности.

Разрешения на работу для прошедших проверку пользователей

1.  В портале управления нажмите вкладку Data (Данные), затем выберите таблицу TodoItem.

2. Нажмите вкладку Permissions (Разрешения). Установите для всех разрешений значение Only authenticated users (Только прошедшие проверку пользователи), затем нажмите кнопку Save (Сохранить). Теперь все операции с таблицей TodoItem будут требовать проверки подлинности пользователя. Это позволит упростить сценарии, описанные в следующей практической работе, так как при их выполнении доступ анонимным пользователям не предоставляется.

3. Откройте в Eclipse проект, который вы создали, выполнив практическую работу Как начать работать со службами Mobile Services.

4. В меню Run (Запуск) нажмите Run (Запустить) для запуска приложения и убедитесь, что после этого появляется необработанное исключение с кодом состояния 401 (Недостаточно прав).

Ошибка вызвана тем, что приложение пытается получить доступ к службам Mobile Services как не прошедший проверку пользователь, а таблица TodoItem теперь требует выполнить такую проверку.

Далее остановимся на том, как обновить приложение, чтобы оно сначала проводило проверку подлинности, а уж потом запрашивало ресурсы мобильной службы.

Добавление функции проверки подлинности в приложение

1. ToDoActivity.java и добавьте следующие операторы импорта.

import com.microsoft.windowsazure.mobileservices.MobileServiceUser; import com.microsoft.windowsazure.mobileservices.MobileServiceAuthenticationProvider; import com.microsoft.windowsazure.mobileservices.UserAuthenticationCallback;

4. Добавьте в класс ToDoActivity следующий метод:

private void authenticate() { // Вход с учетными данными Google. mClient.login(MobileServiceAuthenticationProvider.Google, new UserAuthenticationCallback() { @Override public void onCompleted(MobileServiceUser user, Exception exception, ServiceFilterResponse response) { if (exception == null) { createAndShowDialog(String.format( "You are now logged in - %1$2s", user.getUserId()), "Success"); createTable(); } else { createAndShowDialog("You must log in. Login Required", "Error"); } } });

Ну вот, вы и написали код нового метода проверки подлинности. Проверка подлинности пользователя выполняется по учетным данным Google. На экране появляется диалог, в котором отображается идентификатор прошедшего проверку пользователя. Продолжить работу без успешной проверки подлинности не получится.

Примечание

При использовании другого поставщика удостоверений необходимо просто заменить Google в строке loginmethod (метод входа) указанного выше кода на MicrosoftAccount, Facebook или Twitter соответственно.

1. В методе onCreate добавьте следующую строку после кода, создающего экземпляр объекта MobileServiceClient.

authenticate();

Данный вызов запускает процесс проверки подлинности.

2. Переместите фрагмент кода, находящийся после authenticate(); в методе onCreate, в новый метод createTable, который выглядит следующим образом:

private void createTable() { // Получение экземпляра таблицы мобильной службы для использования mToDoTable = mClient.getTable(ToDoItem.class); mTextNewToDo = (EditText) findViewById(R.id.textNewToDo); // Создание адаптера для привязки элементов представления mAdapter = new ToDoItemAdapter(this, R.layout.row_list_to_do); ListView listViewToDo = (ListView) findViewById(R.id.listViewToDo); listViewToDo.setAdapter(mAdapter); // Загрузка элементов из Mobile Service refreshItemsFromTable();

1. В меню Run (Запуск) нажмите Run (Запустить) для запуска приложения и выполните вход с учетными данными выбранного вами поставщика удостоверений.

Если вход выполнен успешно, приложение должно работать без ошибок. Можно посылать запросы службе Mobile Services и обновлять данные.