Как получить данные из SQL Azure через приложение Xamarin? Руководство - PullRequest
0 голосов
/ 09 июня 2019

Я создаю простое приложение, в котором мне нужно получить и извлечь данные в БД.Как я выяснил из приложения Xamarin, стандартное использование HTTP-запроса к БД вместо прямого подключения к БД.

Я создаю базу данных Azure SQL, я создаю приложение с подключением к этой БД.Но я не могу действительно выяснить, как это теперь должно работать.

Существует не так много учебных пособий, или они не полностью описаны.Я прочитал это https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-xamarin-forms-get-started#download-and-run-the-xamarinforms-solution

Я нашел много ссылок на это, но это кажется устаревшим.Всем рекомендовано загрузить проект из раздела

Запустить решение Xamarin.Forms

В колонке настроек вашего мобильного приложения выберите Быстрый запуск (в разделе Развертывание)> Xamarin.Forms,На шаге 3 нажмите Создать новое приложение, если оно еще не выбрано.Затем нажмите кнопку «Загрузить».

На этой вкладке у меня есть только ссылки на следующие учебные пособия, но нет ссылок на загрузку проекта.(скриншот ниже) https://imgur.com/THCdUE1

Можете ли вы дать мне совет, если я что-то не так делаю?Или ссылка на обновленные учебники?Я немного отчаялся от этого

Большое спасибо

1 Ответ

1 голос
/ 09 июня 2019

Azure SQL не является службой HTTP / s - он запускает собственный протокол SQL Server на порту 1433, как и локальные версии SQL Server.

Если вы пытаетесь подключиться напрямую к SQL Serverиз приложения Xamarin вы почти наверняка совершаете ошибку.Для этого потребуется предоставить учетные данные для вашего приложения Xamarin, которое может подключить напрямую к вашей базе данных, что открывает вашу базу данных для злоумышленника, который может делать практически все, что он хочет.Причина, по которой этот вид двухуровневого приложения опасен, заключается в том, что приложение Xamarin работает на ненадежном устройстве (мобильном устройстве вашего пользователя), а злонамеренный пользователь может перехватывать любые данные, которые ваше приложение хранит в памяти, в том числе учетные данные вашей базы данных.Затем они могут использовать эти учетные данные, чтобы получить доступ к вашей базе данных.Если бы вы не использовали уникальные учетные данные базы данных для каждого пользователя (очень непрактично) и не устанавливали очень строгие роли безопасности в SQL Server, было бы невозможно помешать злоумышленнику получить доступ к базе данных для всех ваших других пользователей (что оченьочень плохой).Другая проблема заключается в том, что многие сети блокируют трафик через порт 1433 или разрешают доступ только через прокси-сервер HTTPS, поэтому ваше приложение не будет работать во многих сетях, если оно попытается подключиться напрямую к SQL.

Это ответ на ваш вопрос, но, пожалуйста, не делайте этого: Если вы уверены, что правильно позаботились о безопасности, вы сможете установить пакет System.Data.SqlClient nuget и использовать его для связи.с SQL Server, как это было бы с любым приложением .NET.Вот пример кода от Microsoft.

Это мое мнение о том, что вы должны сделать вместо этого: правильный правильный способ для большинства приложений Xamarin взаимодействовать с базой данных SQL Azure будет через промежуточный сервер приложений.

Если ваше приложение обращается к данным, относящимся к конкретному пользователю, в нем должны быть указаны учетные данные для каждого пользователя (имя пользователя и пароль, которые обмениваются на токен авторизации, когда пользователь входит в систему, является обычной техникой).Затем приложение Xamarin будет использовать HTTPS для отправки запросов на сервер приложений с использованием этих учетных данных пользователя.Сервер приложений будет проверять учетные данные пользователя (проверять подлинность их правомерности и авторизовать запрашиваемые данные на основе того, кто является пользователем) и отправлять запросы в Azure SQL.

Если ваше приложение только анонимно обращается к общедоступным данным, тогдавы можете отправлять неаутентифицированные запросы на сервер приложений, который будет слепо запрашивать эти данные из Azure SQL и возвращать их вашему клиенту (хотя он также будет возвращать те же данные любому злоумышленнику в Интернете, поэтому будьте уверены, что при использовании этого подхода вы намереваетесьвсе данные должны быть общедоступны для всего мира).

В обоих случаях ваш сервер приложений будет единственным компонентом, который взаимодействует с Azure SQL.Для приложения .NET это обычно делается через System.Data.SqlClient или, возможно, косвенно через ORM, такой как Entity Framreworks.Преимущество этого трехуровневого подхода заключается в том, что уровень ненадежных клиентов не имеет неограниченного доступа к уровню вашей базы данных.Только средний уровень сервера приложений имеет учетные данные для SQL Server, и он является доверенным и работает в защищенной среде (сервер, которым вы управляете, а не мобильное устройство конечного пользователя).Это означает, что злоумышленник не может перехватить учетные данные базы данных и злоупотреблять ими.Это также означает, что вашему приложению требуется только доступ к данным по протоколу HTTPS, поэтому ваше приложение будет работать практически в любой сети.

Это, вероятно, не тот ответ, который вы ищете, поскольку он включает в себя создание всего сервера приложений, которыйдолжен быть размещен вами (служба приложений Azure будет моей рекомендацией, если вы уже используете Azure SQL).Это также требует от вас реализации API на сервере, а затем написания API-клиента для вашего приложения Xamarin.Это немалый объем работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...