2013-04-17 3 views
4

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

Должен ли я входить в оба приложения в одном экземпляре браузера?

ответ

4

Nope.

Это попросить быть подписаны на две учетные записи Google (или два Live ID, или какими бы то ни два счета) в случае одного и того же браузера (который на самом деле might be possible using Chrome, но в общем случае это NO). Это просто невозможно сегодня.

Это, однако, является уродливым, чтобы увидеть это сообщение об ошибке на сайте ACS. Вы настроили приложение ERROR URL for your relying party в ACS? Хотя это свойство необязательно, я настоятельно рекомендую клиентам использовать его и правильно обрабатывать запросы. Я не пробовал ваш конкретный сценарий, но я полагаю, что ACS перенаправит пользователя на URL-адрес ошибки после его настройки, поэтому вы, по крайней мере, знаете, что происходит.

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

UPDATE

Если вы говорите, это происходит только тогда, когда вы вошли в Лазурном портале управления, чем это (мое предположение!) Почти такие же, как вход с Waad. С GA 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. Удалить все куки вашего браузера
  2. Перейти к Hotmail и войти в систему с помощью живого счета ID
  3. Теперь открыт новый и откройте свое пользовательское приложение, которое объединяет WAAD через ACS

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

+0

Я не уверен, что аналогия одновременного входа в несколько аккаунтов Google в том же браузере. Во-первых, я не пытаюсь дважды входить в один и тот же STS или, по крайней мере, не в том же экземпляре. Мой Azure ACS - myapp.accesscontrol.windows.net, и если портал управления Windows Azure использует ACS (я не знаю, есть они или нет), они, безусловно, находятся на другом экземпляре. Также IdP не совпадают, один из них - LiveId, а один - WAAD. Это по-прежнему кажется, что он должен работать. Что мне не хватает? – Nathan

+0

Я пробовал эксперимент Hotmail, и он работал так, как вы ожидали. Я могу войти в Hotmail (теперь Outlook.com), а затем на другой вкладке я могу войти в мое приложение. Но если я запишусь на портал управления Azure, а затем попробую, я получу ошибку. Спасибо за вашу помощь. Кроме того, спасибо за обновленную ссылку о том, как иметь несколько учетных записей пользователей в Chrome, я не знал об этой функции, и она выглядит полезной. – Nathan

+0

круто! :) И все же, пожалуйста, настройте URL-адрес ошибки для вашего полагающегося стороннего приложения, чтобы ваши пользователи не увидели уродливую страницу ошибок ACS, если произошла какая-либо другая ошибка. Btw, ошибка также будет сгенерирована, если пользователь «откажет» в доступе к вашему приложению через Social Login. В первый раз, когда вы входите в свое приложение с помощью [Google/FaceBook/Yahoo], соответствующий социальный вход запрашивает у пользователя разрешение на ваше пространство имен имен .accesscontrol.windows.net. Если пользователь откажется, он снова увидит ошибку ACS. – astaykov

 Смежные вопросы

  • Нет связанных вопросов^_^