Использование утверждений SAML в SharePoint 2010 с сайтами заголовков узлов
Дата публикации исходной статьи: воскресенье, 19 июня 2011 г.
Однажды кто-то прислал мне интересный вопрос о том, можно ли использовать утверждения SAML с сайтами заголовков узлов в SharePoint 2010. Сначала я подумал, что можно, но потом решил изучить этот вопрос глубже. Я выяснил, что ответ действительно положительный, но не все так просто, как я надеялся. Для своего небольшого примера я создал веб-приложение на сайте https://hh.vbtoys.com и два сайта заголовков узлов: https://ash.vbtoys.com и https://josh.vbtoys.com. Хотя это не совсем укладывается в классическую модель сайтов заголовков узлов (я имею в виду запоминающиеся URL-адреса), запомните, что одним из ограничений утверждений SAML и SharePoint является обязательное использование этими сайтами протокола SSL. Поэтому вместо того, чтобы трудиться над созданием сертификата SSL с дополнительными именами субъектов (SAN), я решил упростить задачу, чтобы можно было использовать сертификат с подстановочными знаками. Этого достаточно, чтобы доказать работоспособность и показать необходимые настройки, но надеюсь, что это напоминание окажется полезным для тех, кто захочет использовать сайты заголовков узлов и проверку подлинности SAML.
Итак, сначала я провел простой тест для проверки идеального сценария, в котором для обеспечения работоспособности всех сайтов заголовков узлов мне нужно было сделать всего одно изменение конфигурации. В этом случае я выполнил два действия:
- Создал новую проверяющую сторону в службах федерации Active Directory, которая использовала https://hh.vbtoys.com/_trust/в качестве конечной точки WS Fed и URN urn:sharepoint:hh.
- Добавил область поставщика в свой существующий объект SPTrustedIdentityTokenIssuer следующим образом:
$ap = Get-SPTrustedIdentityTokenIssuer -identity "ADFS IdP"
$uri = new-object System.Uri("https://hh.vbtoys.com")
$ap.ProviderRealms.Add($uri, "urn:sharepoint:hh")
$ap.Update()
Сначала я попробовал обратиться к https://hh.vbtoys.com, и все было хорошо — я зашел на сайт без проблем. Затем — в реальном тесте идеального сценария — я обратился к https://ash.vbtoys.com. К сожалению, надежды не оправдались. Я был перенаправлен на совершенно другой объект SPTrustedIdentityTokenIssuer, поэтому я предположил, что SharePoint выполнил поиск в своем списке областей поставщиков, не смог найти соответствия для https://ash.vbtoys.com и просто захватил первый объект SPTrustedIdentityTokenIssuer из моего списка.
Однако не все еще было потеряно... Как вы, возможно, догадываетесь, в этот момент я мог заставить заработать оба сайта заголовков узлов, но для этого я должен был создать:
- Новую проверяющую сторону в службах федерации Active Directory для каждого семейства сайтов заголовков узлов
- Новую область поставщика для каждого семейства сайтов заголовков узлов (и добавить их в свой объект SPTrustedIdentityTokenIssuer). Для этого я использовал точно такую же команду PowerShell, как и приведенная выше, но изменил Url и Urn для каждого сайта. Например, вот как я добавил поддержку для сайта https://ash.vbtoys.com:
$ap = Get-SPTrustedIdentityTokenIssuer -identity "ADFS IdP"
$uri = new-object System.Uri("https://ash.vbtoys.com")
$ap.ProviderRealms.Add($uri, "urn:sharepoint:ash")
$ap.Update()
Суть этого подхода заключается в добавлении новой проверяющей стороны и области поставщика (Uri и Urn) для каждого семейства сайтов заголовков узлов. После этого я смог входить на все сайты, использующие проверку подлинности SAML.
Это локализованная запись блога. Исходная статья доступна по адресу Using SAML Claims in SharePoint 2010 with Host Header Sites