В этой части рассмотрены вопросы аутентификации в мобильном сервисе из вашего приложения.
Регистрация приложения для аутентификации и настройка мобильного сервиса
Для аутентификации пользователей необходимо зарегистрировать провайдера идентификации, который будет использоваться для вашего приложения, после чего зарегистрировать в мобильном сервисе.
Войдите на портале управления, перейдите на MobileServices и выберите ваш мобильный сервис (рисунок 1).
_mini_oszone.png)
Увеличить
Рис. 1. Портал управления Windows Azure
Перейдите на вкладку Dashboard и запишите значение SiteURL (рисунок 2).
_mini_oszone.png)
Увеличить
Рис. 2. Портал управления Windows Azure
Настроим аутентификацию через Facebook. Для этого понадобится аккаунт Facebook.
Перейдите на страницу Facebook Developers и войдите в систему.
Нажмите Apps, затем Create New App (рисунок 3).
_mini_oszone.png)
Увеличить
Рис. 3. Портал Facebook
Выберите уникальное имя для приложения и нажмите OK (рисунок 4), что зарегистрирует приложение на Facebook.
_mini_oszone.png)
Увеличить
Рис. 4. Портал Facebook
В Select how your app integrates with Facebook разверните Website with Facebook Login,введите URL мобильного сервиса в поле Site URL и нажмите Save Changes (рисунок 5).
_mini_oszone.png)
Увеличить
Рис. 5. Портал Facebook
Запишите значения App ID и App Secret (рисунок 6).
_mini_oszone.png)
Увеличить
Рис. 6. Портал Facebook
Аутентификация на портале настроена.
Перейдите на портал управления Windows Azure и во вкладке Identity введите записанные значения App ID и App Secret, после чего нажмите Save (рисунок 7).
_mini_oszone.png)
Увеличить
Рис. 7. Портал управления Windows Azure
Ограничения прав аутентифицировавшихся пользователей
На портале управления во вкладке Data выберите таблицу TodoItem (рисунок 8).
_mini_oszone.png)
Увеличить
Рис. 8. Портал управления Windows Azure
На вкладке Permissions определите все права в Only authenticated users и нажмите Save (рисунок 9).
_mini_oszone.png)
Увеличить
Рис. 9. Портал управления Windows Azure
Откройте проект из предыдущей части и запустите его. Убедитесь, что при запуске приложения выдается ошибка 401 (Unauthorized). Это происходит из-за того, что теперь таблица TodoItem доступна только аутентифицировавшимся пользователям.
Добавьте в файл mainpage.xaml.cs:
private MobileServiceUser user;
private async System.Threading.Tasks.Task Authenticate()
{
while (user == null)
{
string message;
try
{
user = await App.MobileService
.LoginAsync(MobileServiceAuthenticationProvider.Facebook);
message =
string.Format("You are now logged in - {0}", user.UserId);
}
catch (InvalidOperationException)
{
message = "You must log in. Login Required";
}
var dialog = new MessageDialog(message);
dialog.Commands.Add(new UICommand("OK"));
await dialog.ShowAsync();
}
}
В этом коде создается переменная для хранения текущего пользователя и метод для обработки процесса аутентификации.
Замените содержимое метода OnNavigatedTo:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
await Authenticate();
RefreshTodoItems();
}
Запустите приложение и аутентифицируйтесь в выбранном провайдере идентификации.
Существует возможность использовать серверные скрипты для авторизации аутентифицировавшихся пользователей и выдачи им прав на доступ к данным в Windows Azure Mobile Services.
Регистрация скриптов
Перейдите на портал управления Windows Azure и на вкладке MobileServices выберите ваше приложение (рисунок 10) .
_mini_oszone.png)
Увеличить
Рис. 10. Портал управления Windows Azure
На вкладке Data выберите таблицу TodoItem (рисунок 11).
_mini_oszone.png)
Увеличить
Рис. 11. Портал управления Windows Azure
Нажмите Script и выберите Insert (рисунок 12).
_mini_oszone.png)
Увеличить
Рис. 12. Портал управления Windows Azure
Замените код и нажмите Save.
function insert(item, user, request) {
item.userId = user.userId;
request.execute();
}
Скрипт добавляет в сущность значение userId, которая является идентификатором аутентифицировшегося пользователя, перед тем, как она вставляется в таблицу.
Замените код операции Read:
function read(query, user, request) {
query.where({ userId: user.userId });
request.execute();
}
Запуск приложения
Откройте проект, созданный ранее, и запустите его, после чего войдите в систему, используя ваши учетные данные. Обратите внимание на изменения в интерфейсе.