Сбой согласования интерфейса поставщика поддержки безопасности (SSPI) при использовании ServiceHostFactory

Недавно я начал использовать пользовательскую фабрику ServiceHostFactory, потому что хочу использовать внедрение зависимостей с WCF. И мой клиент, и служба запускаются из VS2010 на моем локальном компьютере, и служба использует сервер разработки ASP.NET. Почему у меня сейчас эта проблема? В прошлом у меня был успех с wsHttpSecurity, когда и клиент, и служба были на моей локальной машине. Я действительно думаю, что единственная разница здесь заключается в использовании ServiceHostFactory. Я пытался использовать атрибут userPrincipalName, но я даже не уверен, что мне следует вводить для значения. Должно ли это быть MachineName\username? Будет ли этот атрибут иметь значение? Я очень ценю любую помощь, которую вы можете предоставить.


person SideFX    schedule 01.09.2010    source источник


Ответы (1)


UserNamePrincipal описывает учетные данные службы. Если вы установите имя участника-пользователя для какой-либо учетной записи, вы утверждаете, что служба будет размещена в процессе, работающем под этой учетной записью. Эта информация передается в WSDL клиенту. Когда клиент открывает канал для службы, он сначала проверяет, что служба работает под заявленной учетной записью (некоторое рукопожатие безопасности). Если нет, возникает исключение, поскольку служба не аутентифицирована. Если вы запускаете службу на сервере разработки, вам необходимо установить имя участника-пользователя на свою текущую учетную запись.

person Ladislav Mrnka    schedule 01.09.2010
comment
Это сработало. Спасибо. В чем разница между userPrincipalName и servicePrincipalName. Должны ли люди обычно устанавливать servicePrincipalName при использовании WCF через Интернет? - person SideFX; 01.09.2010
comment
Ни один из них не используется для связи через Интернет. Он работает только в том же домене Windows (или доверенных доменах). Принципал-пользователь — это просто имя пользователя. Описание проверки субъекта-службы: technet.microsoft.com/en-us/library. /cc961723.aspx Для проверки подлинности Kerberos требуется субъект-служба. - person Ladislav Mrnka; 01.09.2010
comment
Несмотря на то, что приведенное выше решение сработало, оно работает только тогда, когда я подключен к сети моей компании. Когда я не в сети, я получаю такое же исключение безопасности. - person SideFX; 02.09.2010
comment
Да, это происходит, если вы используете доменное имя в качестве основного пользователя и не подключены к домену. - person Ladislav Mrnka; 02.09.2010