Какое значение должно иметь 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".

введите описание изображения здесь

надеюсь, что это поможет