Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Олицетворение клиента в службе Windows Communication Foundation (WCF) позволяет службе выполнять действия от имени клиента. Для действий, подлежащих проверке списка управления доступом (ACL), таких как доступ к каталогам и файлам на компьютере или доступ к базе данных SQL Server, проверка ACL осуществляется на основе учетной записи пользователя клиента. В этом разделе показаны основные шаги, необходимые для включения клиента в домене Windows для задания уровня олицетворения клиента. Рабочий пример этого см. в статье олицетворение клиента. Дополнительные сведения о олицетворении клиента см. в разделе "Делегирование и олицетворение".
Замечание
Когда клиент и служба выполняются на том же компьютере, и клиент работает под учетной записью системы (то есть Local System или Network Service), невозможно подменять его личность при установке безопасного сеанса с маркерами состояния контекста безопасности. Приложение WinForms или консольное приложение обычно выполняется под учетной записью, вошедвшей в систему, чтобы учетная запись была олицетворены по умолчанию. Однако, если клиент является страницей ASP.NET и эта страница размещается в IIS 6.0 или IIS 7.0, то клиент запускается именно под учетной записью Network Service по умолчанию. Все предоставленные системой привязки, поддерживающие безопасные сеансы, по умолчанию используют бездисковый токен контекста безопасности. Однако если клиент является ASP.NET-страницей и используются безопасные сеансы с состоянием с токенами контекста безопасности, клиент не может быть олицетворён. Дополнительные сведения об использовании маркеров контекста безопасности с отслеживанием состояния в безопасном сеансе см. в разделе "Практическое руководство. Создание маркера контекста безопасности для безопасного сеанса".
Включение имперсонации клиента из кэшированного токена Windows на сервисе
Создайте службу. Руководство по этой базовой процедуре см. в руководстве по началу работы.
Используйте привязку, которая использует проверку подлинности Windows и создает сеанс, например NetTcpBinding или WSHttpBinding.
При создании реализации интерфейса службы примените OperationBehaviorAttribute класс к методу, требующим олицетворения клиента. Задайте для свойства Impersonation значение Required.
[OperationBehavior(Impersonation=ImpersonationOption.Required)] public double Add(double a, double b) { return a + b; }<OperationBehavior(Impersonation:=ImpersonationOption.Required)> _ Public Function Add(ByVal a As Double, ByVal b As Double) As Double _ Implements ICalculator.Add Return a + b End Function
Установка допустимого уровня олицетворения на клиенте
Создайте код клиента службы с помощью средства служебной программы метаданных ServiceModel (Svcutil.exe). Дополнительные сведения см. в разделе "Доступ к службам с помощью клиента WCF".
После создания клиента WCF задайте свойство AllowedImpersonationLevel класса WindowsClientCredential на одно из значений перечисления TokenImpersonationLevel.
Замечание
Для использования Delegation необходимо применить согласованную проверку подлинности Kerberos (иногда называемую многошаговой или многоэтапной проверкой подлинности Kerberos). Описание реализации этой функции см. в разделе "Рекомендации по обеспечению безопасности".
CalculatorClient client = new CalculatorClient("CalculatorEndpoint"); client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;Dim client As New CalculatorClient("CalculatorEndpoint") client.ClientCredentials.Windows.AllowedImpersonationLevel = _ System.Security.Principal.TokenImpersonationLevel.Impersonation