Правильная проверка подлинности службы WCF в среде утверждений

Веб-приложения SharePoint в режиме проверки подлинности утверждений поддерживают NTLM, но только с помощью следующих шагов:

  1. HTTP 302 перенаправляет на второе место.
  2. Вызов HTTP 401 для аутентификации NTLM
  3. Проверка HTTP 401
  4. HTTP 302 перенаправляет обратно в исходное местоположение (сервис)

Могу ли я написать собственное поведение, фабрику каналов или привязку, чтобы справиться с этим? Есть ли лучший способ сделать это?


person Gail-F    schedule 21.03.2011    source источник
comment
Я не уверен на 100%, но c2WTS не предполагается Для решения этой проблемы?   -  person Frédéric Hamidi    schedule 21.03.2011
comment
Я думаю, что C2WTS — это один из возможных маршрутов на стороне службы, если аутентификация действительно обрабатывается библиотеками модели идентификации. Как я это вижу, есть два основных варианта: либо использовать утверждения для аутентификации, либо каким-то образом отключить утверждения для одного файла/адреса и позволить службе получать заголовок NTLM. У меня такое ощущение, что первое лучше.   -  person Gail-F    schedule 21.03.2011


Ответы (1)


То, что вы перечислили, является стандартным рукопожатием NTLM.

Один из способов избежать этого — использовать Kerberos вместо NTLM. См.: http://technet.microsoft.com/en-us/library/gg502594.aspx

person Shiraz Bhaiji    schedule 21.03.2011
comment
Если Kerberos работает, это один из вариантов, но, судя по тому, что я видел в исходном коде IdentityModel, перед фактической аутентификацией все равно будет перенаправление на второе место. Кажется, что basicHttpBinding с транспортной аутентификацией NTLM не сможет понять/передать результаты файла cookie федерации № 2. Но более важно: я не знаю, как заставить клиент WCF пройти мимо № 1, который на самом деле 403, а не 302 в случае с SharePoint. - person Gail-F; 21.03.2011