Azure ACS с WAAD, поскольку IdP выдает ошибку протокола WS-Federation, если уже выполнен вход в другую учетную запись Microsoft

Мое приложение проверяющей стороны использует Windows Azure ACS для аутентификации пользователя. У меня ACS настроен на использование Windows Azure Active Directory (WAAD) в качестве поставщика удостоверений. По большей части это работает, и пользователи могут входить в мое приложение, используя удостоверения, которые я им предоставил в WAAD. Однако у меня есть проблема в том, что если пользователь вошел в другую учетную запись Microsoft и в том же экземпляре браузера пытается войти в мое приложение, он получает уродливую ошибку ACS «ACS20012: запрос не является допустимым сообщением протокола WS-Federation. ". Например, если я открою Chrome и войду на портал управления Windows Azure с помощью своего идентификатора Windows Live Id, а затем открою новую вкладку и попытаюсь войти в свое настраиваемое приложение, я получу эту ошибку. Если я открываю новый браузер или очищаю файлы cookie, я могу войти в систему.

Разве я не могу войти в оба приложения в одном экземпляре браузера?


person Nathan    schedule 17.04.2013    source источник


Ответы (1)


Неа.

Это запрос на вход в две учетные записи Google (или две учетные записи Live ID, или любые две другие учетные записи) в одном экземпляре браузера (что на самом деле можно использовать в Chrome, но обычно это НЕТ). Сегодня это просто невозможно.

Однако неприятно видеть это сообщение об ошибке на сайте ACS. Вы настроили URL-адрес ОШИБКИ для приложения проверяющей стороны? в САУ? Хотя это свойство является необязательным, я настоятельно рекомендую клиентам использовать его и правильно обрабатывать запросы к нему. Я не пробовал ваш конкретный сценарий, но предполагаю, что ACS перенаправит пользователя на URL-адрес ошибки после его настройки, чтобы вы, по крайней мере, знали, что происходит.

Настройте URL-адрес ошибки для своей проверяющей стороны и сообщите нам, будет ли пользователь перенаправлен на ваш сайт. После этого вы сможете сгенерировать правильное сообщение об ошибке.

ОБНОВЛЕНИЕ

Если вы говорите, что это происходит только тогда, когда вы вошли на портал управления Azure, то это (мое предположение!) Почти то же самое, что и вход с помощью WAAD. После ГА WAAD произошли некоторые изменения. Если вы проследите фактический поток входа в систему с помощью Fiddler, вы заметите, что когда вход на портал управления имеет немного другой поток, то вход, например, в Hotmail. Если вы войдете в Hotmail, вы просто будете перенаправлены на login.live.com, вы войдете в систему и вернетесь в Hotmail.

Теперь, если вы проверите трафик при переходе к manage.windowsazure.com, вы заметите, что есть первое перенаправление на login.microsoftonline.com (это обрабатывается WAAD!). Затем идет перенаправление на login.live.com (это для вашей учетной записи Live ID). Я предполагаю, что WAAD от login.microsoftonline.com объединяет Live ID (login.live.com) для аутентификации. Вот почему вы на самом деле вошли в систему с помощью WAAD, и вот почему ваше приложение не работает.

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

  1. Удалите все файлы cookie вашего браузера
  2. Перейдите в Hotmail и войдите в свою учетную запись Live ID.
  3. Теперь откройте новую вкладку и откройте свое настраиваемое приложение, которое объединяет WAAD через ACS.

Подозреваю, что теперь вы сможете авторизоваться в своем приложении.

person astaykov    schedule 17.04.2013
comment
Я не уверен, что применима аналогия с одновременным входом в несколько учетных записей Google в одном браузере. Во-первых, я не пытаюсь дважды войти в один и тот же STS или, по крайней мере, в один и тот же экземпляр. Мой Azure ACS - это myapp.accesscontrol.windows.net, и если портал управления Windows Azure использует ACS (я не знаю, используются они или нет), они, безусловно, находятся в другом экземпляре. Кроме того, IdP не совпадают, один - LiveId, а другой - WAAD. Это все еще кажется, что это должно работать. Что мне не хватает? - person Nathan; 17.04.2013
comment
Я попробовал провести эксперимент с Hotmail, и он сработал, как вы и ожидали. Я мог войти в Hotmail (теперь Outlook.com), а затем на другой вкладке я могу войти в свое приложение. Но если я войду на портал управления Azure, а затем попробую, я получаю сообщение об ошибке. Спасибо за вашу помощь. Кроме того, спасибо за обновленную ссылку о том, как иметь несколько учетных записей пользователей в Chrome, я не знал об этой функции, и она выглядит полезной. - person Nathan; 17.04.2013
comment
здорово! :) И все же, пожалуйста, настройте URL-адрес ошибки для вашего приложения проверяющей стороны, чтобы ваши пользователи не видели уродливую страницу ошибок ACS, если произойдет какая-либо другая ошибка. Кстати, ошибка также будет сгенерирована, если пользователь denies получит доступ к вашему приложению через социальный вход. В самый первый раз, когда вы входите в свое приложение с помощью [Google / FaceBook / Yahoo], соответствующая учетная запись в социальной сети запрашивает у пользователя разрешение на ваше пространство имен [namespace] .accesscontrol.windows.net. Если пользователь откажется, он снова увидит ошибку ACS. - person astaykov; 17.04.2013
comment
Вы можете войти в несколько учетных записей Google одновременно. Google спросит, какую учетную запись вы хотите использовать. - person Eugenio Pace; 18.04.2013
comment
хм, никогда не пробовал. Но, конечно, вы не можете войти в несколько учетных записей WAAD с одним и тем же экземпляром браузера ... - person astaykov; 18.04.2013
comment
@astaykov, о некрасивой ошибке. У меня действительно есть URL-адрес ошибки, установленный для моего приложения проверяющей стороны в ACS. Если я сделаю что-то вроде попытки войти в свою учетную запись Google и отклоню запрос, я буду перенаправлен на URL-адрес ошибки моего приложения. Однако в случае нескольких учетных записей WAAD он не перенаправляет меня. Я получаю уродливую страницу с ошибкой из login.windows.net. - person Nathan; 19.04.2013
comment
Да не с WAAD. У меня 3 аккаунта Google, и я регулярно переключаюсь между ними. Работает отлично! Целыми днями занимаясь делами, связанными с Id, я научился любить инкогнито и приватный просмотр. Я согласен, это может сбивать с толку. - person Eugenio Pace; 19.04.2013