Использование диспетчера трафика Azure с мобильным приложением

Можно ли использовать Azure Traffic Manager с мобильными приложениями специально для входа в социальную сеть? Я настроил диспетчер трафика и две службы приложений (скажем, mobileapp1 и mobileapp2) для работы с ним. Кажется, они неплохо работают с почтальоном и ответом, и все работает. Теперь я объявил URL-адрес диспетчера трафика в качестве клиента в клиентском приложении xamarin, и приложение выдает исключение при входе в Azure. После входа в Facebook, когда я передаю токен на сервер, используя эту строку

var user = await client.LoginAsync(MobileServiceAuthenticationProvider.Facebook, token);

в этой строке выдается исключение, сообщающее о недопустимой операции.

В продолжение этого сомнения.. У меня есть два мобильных приложения, связанных с одним диспетчером трафика. У обоих из них настроен вход в Facebook. Так это должно работать? Что произойдет, если, когда пользователь регистрируется, он / она перенаправляется на мобильное приложение1 и там выполняется аутентификация Azure, а в некоторых последующих попытках пользователь перенаправляется на мобильное приложение2. Знает ли база данных mobileapp2 о пользователе? Это когда я использую сервис аутентификации, который поставляется с мобильным приложением, а не B2C.

1 ответ

Решение

На основе вашего кода вы используете управляемую клиентом проверку подлинности с мобильными приложениями Azure. Для аутентификации / авторизации службы приложений, таких как тип мобильного клиента, клиенту будет выдан веб-токен JSON (JWT), который будет представлен в x-zumo-auth заголовок при отправке запроса на мобильный бэкэнд. Для получения дополнительной информации вы можете обратиться к разделу "Как работает аутентификация в службе приложений". Вот токен JWT при использовании диспетчера трафика Azure с мобильным приложением, мы могли бы использовать jwt.io для декодирования токена:

Для токена JWT будет использоваться WEBSITE_AUTH_SIGNING_KEY переменная среды для подписи audience, issuer, Claims, Для получения более подробной информации, вы можете обратиться сюда о том, как использовать пользовательскую аутентификацию для вашего приложения.

Каждое мобильное приложение имеет разные WEBSITE_AUTH_SIGNING_KEY Вы можете использовать kudu и нажать Environment, чтобы найти его. Более того, я попытался обновить два мобильных приложения, чтобы они использовали один и тот же ключ подписи, но безуспешно.

Ваш LoginAsync отправит следующий запрос:

POST https://<yourname>.trafficmanager.net/.auth/login/facebook
Body {"access_token":"<access_token_from_facebook>"} 

Вы можете использовать Fiddler для захвата трассировки сети.

Можно ли использовать Azure Traffic Manager с мобильными приложениями специально для входа в социальную сеть?

Для пользовательской аутентификации вы можете настроить ключ подписи в файле web.config. Для входа в социальную сеть и использования аутентификации, предоставляемой Azure, вы не можете поделиться ключом подписи между различными мобильными приложениями. Более того, если вы установите Routing method в Geographic и ваши мобильные приложения находятся в разных географических точках, я предполагаю, что ваш сценарий может работать так, как ожидалось.

Update1:

После некоторых испытаний я обнаружил, что вы можете WEBSITE_AUTH_SIGNING_KEY настройку под блейдом "НАСТРОЙКА> Настройки приложения" вашего мобильного приложения, чтобы переопределить WEBSITE_AUTH_SIGNING_KEY Переменная окружения выглядит следующим образом:

Примечание. Ключ подписи должен быть хешированной строкой SHA-256. Вы можете синхронизировать ключ между двумя мобильными приложениями или создать свой собственный ключ. После настройки параметров вы можете использовать куду, чтобы проверить новейшие WEBSITE_AUTH_SIGNING_KEY,

UPDATE2:

моя проблема в том, чтобы выяснить, как использовать социальную аутентификацию с двумя различными мобильными приложениями, где перенаправление диспетчером трафика происходит на основе производительности

В официальной документации упоминается метод маршрутизации трафика Performance следующим образом:

Производительность. Выберите "Производительность", если у вас есть конечные точки в разных географических точках, и вы хотите, чтобы конечные пользователи использовали "самую близкую" конечную точку с точки зрения самой низкой задержки в сети.

Я сделал тест, вы могли бы сослаться на него. Вот конечные точки под моим профилем диспетчера трафика:

Примечание. Мои два мобильных приложения настроены одинаково Client Id для моей аутентификации MSA и установить то же самое WEBSITE_AUTH_SIGNING_KEY значение в разделе "НАСТРОЙКИ> Настройки приложения" для кодирования / декодирования токена.

Для меня /api/values Конечная точка API, я просто возвращаю WEBSITE_HOSTNAME Переменная окружения выглядит следующим образом:

return Request.CreateResponse(new { WEBSITE_HOSTNAME =Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME") });

Для метода маршрутизации производительности все мои запросы будут направлены на bruce-mobile02.azurewebsites.net:

Для метода взвешенной маршрутизации я настроил один и тот же ВЕС для двух моих конечных точек. По моему тесту запросы с одинаковыми AuthenticationToken что прилагается как x-zumo-auth значение заголовка для авторизации будет направлено на две мои конечные точки следующим образом:

Другие вопросы по тегам