Добавление проверки подлинности в приложение Apache Cordova
Сводка
В этом учебнике вы добавляете проверку подлинности в учебный проект ToDoList для Apache Cordova с помощью поддерживаемого поставщика удостоверений. Этот учебник создан на основе учебника Начало работы с мобильными службами , который необходимо изучить в первую очередь.
Регистрация приложения для проверки подлинности и настройка службы приложений
Сначала необходимо зарегистрировать приложение на сайте поставщика удостоверений, а затем ввести созданные поставщиком учетные данные в серверной части мобильного приложения.
Настройте выбранный поставщик удостоверений, следуя соответствующим инструкциям:
Повторите предыдущие шаги для каждого поставщика, поддержку которого вы хотите включить в свое приложение.
Видео, демонстрирующее аналогичные действия
Ограничение разрешений для пользователей, прошедших проверку подлинности
По умолчанию API-интерфейсы в серверной части мобильных приложений могут вызываться анонимно. Далее необходимо ограничить доступ всем клиентам, не прошедшим проверку подлинности.
Серверная часть Node.js (через портал Azure):
В параметрах мобильных приложений щелкните простые таблицы и выберите таблицу. Щелкните Изменить разрешения, выберите для всех разрешений параметр Authenticated access only (Доступ только с проверкой подлинности) и нажмите кнопку Сохранить.
Серверная часть .NET (C#):
В серверном проекте перейдите к контроллерам>TodoItemController. CS. Примените атрибут
[Authorize]
к классу TodoItemController следующим образом. Чтобы предоставить доступ только определенным методам, этот атрибут можно также применить именно к ним, а не к классу. Повторная публикация серверного проекта[Authorize] public class TodoItemController : TableController<TodoItem>
Серверная служба Node.js (через код Node.js) :
Чтобы доступ к таблице предоставлялся только после проверки подлинности, добавьте в серверный скрипт Node.js следующую строку:
table.access = 'authenticated';
Дополнительные сведения см. в разделе Практическое руководство. Обязательная аутентификация для доступа к таблицам. Узнайте, как загрузить проект быстрого запуска кода с веб-узла, в разделе Загрузка серверной части на основе Node.js в виде готового кода для быстрого запуска с помощью Git.
Теперь можно убедиться, что анонимный доступ к серверной части был отключен. В Visual Studio сделайте следующее:
- Откройте проект, созданный при выполнении заданий руководства Начало работы с мобильными приложениями.
- Запустите приложение в эмуляторе Google Android.
- Проверьте, отображается ли сообщение о непредвиденном сбое подключения после запуска приложения.
Далее следует изменить приложение таким образом, чтобы оно аутентифицировало пользователей, прежде чем запрашивать ресурсы из серверной части мобильного приложения.
Добавление проверки подлинности в приложение
Откройте проект в Visual Studio, а затем откройте файл
www/index.html
для редактирования.Найдите мета-тег
Content-Security-Policy
в разделе head. Добавьте узел OAuth в список допустимых источников.Поставщик Имя поставщика SDK Узел OAuth Azure Active Directory aad https://login.microsoftonline.com Facebook facebook https://www.facebook.com Google Google https://accounts.google.com Microsoft microsoftaccount https://login.live.com Twitter Twitter https://api.twitter.com Пример политики безопасности содержимого (для Azure Active Directory):
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://login.microsoftonline.com https://yourapp.azurewebsites.net; style-src 'self'">
Замените
https://login.microsoftonline.com
узлом OAuth из приведенной выше таблицы. Дополнительные сведения о метатеге политики безопасности содержимого см. в документации по политике безопасности содержимого.Некоторые поставщики аутентификации не требуют изменений в политике безопасности содержимого при использовании на соответствующих мобильных устройствах. Например, изменения в политики безопасности содержимого не требуются, если на устройстве Android используется проверка подлинности Google.
www/js/index.js
Откройте файл для редактирования, перейдите кonDeviceReady()
методу и в коде создания клиента добавьте следующий код:// Login to the service client.login('SDK_Provider_Name') .then(function () { // BEGINNING OF ORIGINAL CODE // Create a table reference todoItemTable = client.getTable('todoitem'); // Refresh the todoItems refreshDisplay(); // Wire up the UI Event Handler for the Add Item $('#add-item').submit(addItemHandler); $('#refresh').on('click', refreshDisplay); // END OF ORIGINAL CODE }, handleError);
Этот код заменит существующий код, который создает ссылку на таблицу и обновляет пользовательский интерфейс.
Метод login() запускает аутентификацию с использованием поставщика. Метод login() — это асинхронная функция, которая возвращает обещание JavaScript. Остальная часть инициализации помещается в ответ обещания и до завершения метода login() не выполняется.
В коде, который вы только что добавили, замените
SDK_Provider_Name
именем своего поставщика входа. Например, для Azure Active Directory используйтеclient.login('aad')
.Выполните проект. Когда инициализация проекта будет завершена, в приложении откроется страница входа OAth для выбранного поставщика аутентификации.
Next Steps
- Узнайте больше об аутентификации с использованием службы приложений Azure.
- Продолжите работу с учебником, добавив в приложение Apache Cordova push-уведомления .
Подробнее об использовании пакетов SDK.