Олицетворение WCF - PullRequest
       8

Олицетворение WCF

3 голосов
/ 16 сентября 2009

У меня есть служба WCF, размещенная в IIS, которая требуется для олицетворения учетной записи annon.

в моем Webconfig

<authentication mode="Windows"/>
<identity impersonate ="true"/>

Тестирование следующего, с vs2008

        public void ByRuleId(int ruleId)
        {
            try
            {
                string user = WindowsIdentity.GetCurrent().Name;
                string name = Thread.CurrentPrincipal.Identity.Name;
                ........

                //get the data as a string.
                using (FileStream fs = File.Open(location, FileMode.Open))
                using (StreamReader reader = new StreamReader(fs))
                {
                   rawData = reader.ReadToEnd();
                }

            }
            catch.....
         }

это работает. Однако, если я добавлю атрибут олицетворения

  [OperationBehavior(Impersonation=ImpersonationOption.Required)]
  public void ByRuleId(int ruleId)

это не работает с сообщением об ошибке

«Либо требуемый уровень олицетворения не был предоставлен, либо предоставленный уровень олицетворения недействителен.»

немного возни, я заметил, что первый способ был аутентифицирован Kerboros, а второй просто не прошел при типе аутентификации

Я использую инструмент клиента WCF, чтобы передать свои учетные данные. похоже, это работает.

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Проверьте 'TokenImpersonationLevel' идентичности текущего потока; он должен быть как минимум «Олицетворением» для выполнения операций на компьютере, на котором запущена служба.

Как правило, если вы используете прокси-клиент, вам нужно установить 'TokenImpersonationLevel' клиента:

http://www.devx.com/codemag/Article/33342/1763/page/4

0 голосов
/ 16 сентября 2009

Основная цель этого была получить доступ без доступа, даже если ответ MattK был большой помощью.

вот что я сделал для этого.

о выполнении контракта WCF я добавил

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class TransferFile : ITransferFile

и в web.config

   <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled ="true" />

после этого я смог выдать себя за анон аккаунт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...