Подключение к Azure Web App / базе данных SQL из процесса внешнего узла

#javascript #node.js #azure #azure-sql-database #azure-web-app-service

#javascript #node.js #azure #azure-sql-database #azure-web-app-service

Вопрос:

У меня запущено веб-приложение Azure, в котором определены пользовательские простые API и несколько простых таблиц. В прошлом году я использовал это веб-приложение Azure и подключенные к нему таблицы SQL для запуска нескольких LOB-приложений Windows Store на основе javascript, и это работало действительно хорошо.

Но теперь мне нужно получить доступ к этим ресурсам для Node.js процесс, который я буду запускать локально. Я хотел бы получить к нему доступ практически таким же образом, как я получаю к нему доступ в моем приложении Windows Store:

 var client = new window.WindowsAzure.MobileServiceClient(
      "https://my-mobileservice.azure-mobile.net/",
      "MOBILESERVICEKEY"
);
  

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

Итак, как я могу это сделать?

Комментарии:

1. таким образом, любой API мобильных сервисов или любой веб-api должен быть доступен через Интернет. таким образом, вы должны иметь возможность использовать их из приложения node js, которое у вас локально. то же самое относится и к таблицам sql azure. для этого, конечно, вам нужно добавить правило брандмауэра, разрешающее трафик из окна, в котором вы запускаете код узла.

2. @Aravind Я не совсем уверен, как бы я использовал его таким образом. Этот способ доступа к нему, насколько я знаю, недокументирован. Или, по крайней мере, я не видел эту документацию.

3. @TKoL — что является недокументированным? Простые таблицы — это просто таблицы.

4. @DavidMakogon хорошо, я не знаю, как получить к ним доступ.

Ответ №1:

В предоставленном вами фрагменте кода использовался Azure Mobile Apps client SDK, предназначенный для устройств или браузеров.

В вашем другом node.js приложение, вы можете рассмотреть возможность реализации HTTP-запросов к вашим таблицам Easy Tables и скриптам Easy APIs. Поскольку служба мобильных приложений Azure предоставляет их как RESTful API. Вы можете обратиться к https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-node-backend-how-to-use-server-sdk/#TableOperations для получения дополнительной информации.

И вы можете обратиться к следующему фрагменту кода для получения дополнительной информации.

 var request = require("request");
request({
    method:'GET',
    url:'https://<your_mobile_app>.azurewebsites.net/tables/TodoItem',
    headers:{
        'ZUMO-API-VERSION':'2.0.0'
    }
},(err,res,body)=>{
    console.log(body);
})
  

Комментарии:

1. Спасибо, Гэри, я попробовал это, и сначала я получил эту ошибку: «Эта версия (1.0.0) сервера не поддерживает использование zumo-api-version в запросе. Для получения дополнительной информации и поддерживаемых клиентов смотрите: go.microsoft.com/fwlink/?LinkID=690568#1.0.0 » Итак, я перешел по этому URL-адресу и не смог толком понять, что я должен был с ним делать, но я подумал, что где-то подразумевалось, что я должен удалить заголовок ZUMO, поэтому я удалил весь раздел «заголовки», а затем я получил эту ошибку: «{«code»: 401,»error»:»Ошибка: неавторизованная»}» Я сейчас в полном замешательстве.

2. Это означает, что ваше мобильное приложение защищено поставщиком аутентификации. Один из azure.microsoft.com/en-us/documentation/articles /… . Итак, вам необходимо пройти аутентификацию в node.js приложение, получите токен, а затем установите токен в заголовках. Например, если вы используете AAD для защиты своего мобильного приложения, вы можете использовать github.com/AzureAD/passport-azure-ad для применения токена.

3. @gary-liu-msft Извините, я такой тупой, я буквально не знаю, с чего начать. Мне кажется, что использовать Azure было так просто, когда я только создавал универсальные приложения для магазина Windows, а теперь это так сложно. Когда я заглядываю на свой портал Azure и нахожу свою службу приложений, я перехожу к проверке подлинности / авторизации, а параметр проверки подлинности службы приложений выключен . Возможно, я слишком усложняю это, поэтому позвольте мне объяснить мою конечную цель: мне нужно, чтобы приложение узла запускалось каждые 30 минут, которое обновляет таблицу SQL, подключенную к моей службе приложений, на основе новой информации, которую оно получает (из источника Dynamics NAV).

4. @gary-liu-msft Я подумал, может быть, попробовать node.js Веб-задание в моей службе приложений, но даже с этим я не могу найти документацию, которая мне нужна, чтобы рассказать, как я могу получить доступ к моим таблицам Easy из node WebJob

5. @gary-liu-msft Итак, что я сделал, так это следующее: я создал новую таблицу в базе данных моего веб-приложения, и я оставил разрешения для таблицы как ‘Anybody’ для вставки, обновления, удаления и чтения. Когда я оставляю разрешения как ‘Anybody’ и удаляю ваш заголовок ZUMO-API, я, по-видимому, могу довольно легко получить доступ к таблице. Но, похоже, на самом деле это не очень заботящийся о безопасности параметр. Другие мои таблицы имеют разрешения «Любой, у кого есть ключ доступа». Есть ли способ, которым я могу использовать ключ доступа в Node.js для аутентификации на сервере?