SharePoint 2010 на основе утверждений ADFS и встроенный IFrame. Единый вход приложения с поддержкой утверждений ASP.NET.

У меня есть веб-сайт SharePoint 2010, настроенный для утверждений только как отвечающая сторона для ADFS. У меня также есть приложение ASP.NET, настроенное для утверждений с использованием расширения WIF + для SAML 2.0 CTP в качестве отвечающей стороны для того же сервера ADFS.

Если я перейду в SharePoint, я буду перенаправлен на сервер ADFS (https://.../adfs/ls?...) и отображается запрос на вход в Windows. Если затем я перейду в том же экземпляре браузера к моему приложению ASP.NET, перенаправление происходит быстро на тот же сервер ADFS, автоматически аутентифицируется и перенаправляется обратно в приложение ASP.NET без запроса безопасности. Как в Как совместно использовать контекст проверки подлинности между сайтом SharePoint 2010 и приложениями ASP.NET.

Проблема возникает, когда я встраиваю приложение ASP.NET в IFrame в веб-части SharePoint. При запуске нового экземпляра браузера и переходе к SharePoint я получаю запрос на вход в Windows. Когда страница загружается до IFrame, я получаю второе приглашение Windows для того же сервера для встраиваемого приложения ASP.NET. Если я отменю запрос, я получаю сообщение 401 Неавторизовано в IFrame. Если я перейду к приложению ASP.NET, мне не будет предложено, и оно автоматически войдет в систему. Вернувшись к приложению SharePoint, страница загрузится, включая содержимое IFrame, без подсказок.

Конечная точка SharePoint использует пассивную конечную точку WS-Federation для https://sharepoint:port/_trust/ с привязкой POST. Конечная точка приложения ASP.NET использует конечные точки потребителя утверждения SAML https://aspnetapp/ с привязкой POST и Artifact. Претензии, переданные от обоих, содержат все необходимое для каждого приложения.

Кто-нибудь знает, как предотвратить второй запрос на вход при использовании IFrame в SharePoint?


person mgrowan    schedule 18.06.2012    source источник


Ответы (3)


Теперь он работает, как ожидалось, с единым входом после обновления до System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0 из теперь встроенных классов WIF. Я предполагаю, что возникла проблема совместимости с расширением Microsoft.IdentityModel.Web.Saml2AuthenticationModule SAML 2.0 CTP, которая так и не была завершена.

person mgrowan    schedule 25.07.2014

Просто снимок в темноте, но если предположить, что пользовательское приложение ASP .NET и SharePoint находятся на двух разных машинах, тогда могут быть некоторые тонкости, касающиеся Kerberos, учитывая, что страница ASP .NET находится в IFRAME - возможно, требуется билет Kerberos для передачи между SharePoint и ASP .NET.

HTH.

person AshesToAshes    schedule 18.07.2012
comment
Спасибо, но насколько мне известно, Kerberos не участвует в проверке подлинности утверждений. Однако я считаю, что существует проблема с передачей токена, поскольку SharePoint хранит токен утверждения, отличный от Microsoft Identity Framework, используемого на странице ASP.NET. - person mgrowan; 28.09.2012

Это только предположение, но я считаю, что это связано с тем, что оба сайта, сайт Sharepoint и встроенный сайт asp.net из iframe, начинают загружаться одновременно.

Поскольку оба не аутентифицированы, они оба переходят в Adfs. Но поскольку вы не аутентифицированы, Adfs запускает запрос 401, запрашивая аутентификацию. Однако ваш веб-браузер не отображает оба запроса на вход одновременно. Скорее, вы получите первое приглашение для входа в систему, и при успешном входе в систему с того момента, как Adfs сохранят аутентификацию, так что любой другой сайт, обращающийся за претензиями, получит их бесплатно. Но внутренний сайт, asp.net, уже начал процесс входа в систему! Ваш браузер не знает этого и вынуждает вас продолжить вход в систему.

В заключение, моя идея заключалась бы в том, чтобы иметь страницу sharepoint, которая требует аутентификации и которая затем перенаправляет на ДРУГОЙ страницу, на которой есть сайт asp.net в iframe, чтобы ваш браузер не пытался запустить последовательность входа для обоих сайтов в то же время.

person Wiktor Zychla    schedule 18.07.2012
comment
Спасибо! Это действительно хорошая теория. Однако при переходе к SharePoint он перенаправляется в ADFS перед загрузкой страницы и только после проверки подлинности возвращается для визуализации страницы SharePoint. Я также протестировал его со встроенным сайтом asp.net в iframe на второй странице с домашней страницы SharePoint. - person mgrowan; 28.09.2012