Какое значение должно иметь servicePrincipalName?
Я пытаюсь настроить олицетворение клиента на моем сервисе.
Мне нужно установить значение для servicePrincipalName моих сервисов endPoint
Я смотрю эту статью статью MSDN, но все еще не могу понять ее.
Мой сервис размещен в консольном приложении на сервере, который мы будем называть ServerName1.
Uri: net.tcp://ServerName1:9990/TestService1/
.
Что конкретно должно быть мое servicePrincipalName?
Я пробовал, без радости:
<identity>
<servicePrincipalName value="ServerName1" />
</identity>
Ответы
Ответ 1
Имя пользователя, которому вы хотите пользоваться сервисом для пользователя (выполнить его). Поэтому, если вы хотите выполнить его под учетными данными "локальной сети", указанный выше XML должен выглядеть так:
<identity>
<servicePrincipalName value="Local Network" />
</identity>
Ответ 2
Настройка servicePrincipleName - сложная тема, чтобы описать это в нескольких словах
Возможно, эти статьи помогут:
Скорее всего, вам нужно настроить его следующим образом.
<identity>
<servicePrincipalName value="HOST/ServerName1:9990" />
</identity>
Обычно мы используем userPrincipalName вместо servicePrincipalName, вроде этого
<identity>
<userPrincipalName value="[email protected]" />
</identity>
Ответ 3
Для получения полного руководства по созданию вашего SPN ознакомьтесь с этими статьями:
https://geertbaeten.wordpress.com/2013/06/03/kerberos-authentication-and-delegation-serviceprincipalnames/
http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx
Это больше о стороне инфраструктуры (ADDS), но первая часть очень полезна для программистов.
Ответ 4
При использовании служб WCF, размещенных в IIS.
Мы используем "host/computerName", как <servicePrincipalName />
, для анонимного соединения. Внутри вашего приложения WCF вы можете установить пул приложений, например "iis apppool\defaultAppPool", этот пользователь будет настоящим подключенным пользователем.
В приведенном ниже изображении
/C DataService - это имя приложения ( "Tom TestService1" )
Пул приложений: пул может быть "DefaultAppPool", в случае "Application User (сквозная аутентификация)", вы будете использовать " IIS AppPool\DefaultAppPool" в качестве пользователя для предоставления прав на определенный ресурс, например, в виде файла или строки подключения к серверу sql.
И даже используя анонимную аутентификацию, вы можете установить "авторизацию форм" на конкретный ресурс внутри приложения WCF, например "MasterSettings.svc".
![введите описание изображения здесь]()
надеюсь, что это поможет