Использование диспетчера трафика 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
значение заголовка для авторизации будет направлено на две мои конечные точки следующим образом: