При использовании настраиваемого поставщика утверждений в SharePoint 2010 в средстве выбора людей не отображается выбранное имя
Дата публикации исходной статьи: вторник, 28 июня 2011 г.
Недавно я столкнулся с проблемой, которую оказалось довольно сложно отследить, поэтому я решил поделиться информацией об этой проблеме и ее решении. В данном случае был разработан настраиваемый поставщик утверждений, который использовался в качестве поставщика утверждений по умолчанию для SPTrustedIdentityTokenIssuer, как описано в следующей статье: https://blogs.technet.com/b/speschka/archive/2010/04/28/how-to-override-the-default-name-resolution-and-claims-provider-in-sharepoint-2010.aspx. В отдельных случаях он кажется рабочим — вы выполняете поиск, он отображает список совпадений, вы выбираете одно из них и нажимаете кнопку "OK". Иногда все работает хорошо — диалоговое окно закрывается и вы видите в поле ввода элемента управления разрешенное имя. Кроме того, вы можете задать точку останова в методе FillResolve и пройти через нее.
Однако в некоторых случаях наблюдается следующее поведение:
- Окно средства выбора людей закрывается
- Поле ввода элемента управления пусто — не отображается ничего(независимо от того, было ли разрешено имя)
- Если задать точку останова в методе FillResolve, она никогда не достигается
- В журналах ULS не зарегистрированы ошибки
В данном случае я в конце концов определил, что настраиваемый поставщик утверждений добавлял тип утверждения, который не имел соответствующего сопоставления в SPTrustedIdentityTokenIssuer. Например, он создавал утверждение с типом https://schemas.steve.com/foo, а в списке сопоставлений утверждений для SPTrustedIdentityTokenIssuer не было сопоставления для https://schemas.steve.com/foo (пример сопоставлений утверждений и сведения об их создании см. в статье https://blogs.technet.com/b/speschka/archive/2010/02/17/creating-both-an-identity-and-role-claim-for-a-sharepoint-2010-claims-auth-application.aspx). Таким образом, вместо добавления утверждения, которое SharePoint не может сопоставить, поставщик просто теряет его где-то в конвейере обработки и выдает пустой экран без каких-либо сообщений об ошибках. Вот почему отслеживание этой проблемы может занять так много времени.
В данном конкретном случае мы в конце концов удалили объект SPTrustedIdentityTokenIssuer и создали его заново, добавив новое сопоставление для типа утверждения, который исчезал из средства выбора людей. После повторного запуска код заработал правильно, что подтвердило наличие проблемы и ее решение.
Это локализованная запись блога. Исходная статья доступна по адресу Name Disappears After Selecting in People Picker with Custom Claims Provider in SharePoint 2010