Имя пользователя Windows в WCF 4 Rest - PullRequest
0 голосов
/ 13 октября 2010

У меня проблемы с аутентификацией Windows в приложении REST WCF.

Используя VS2010, я выбрал Новый проект> Приложение службы REST WCF.

Я изменил web.config, чтобы убедиться, чтоПроверка подлинности Windows и запрет анонимных пользователей.

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows" />

    <authorization>
      <deny users="?"/>
    </authorization>

  </system.web>

Я изменил Service1.cs, чтобы вернуть имя пользователя в ответе:

[WebGet(UriTemplate = "",
    RequestFormat= WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle=WebMessageBodyStyle.Bare)]
public List<SampleItem> GetCollection()
{
    // TODO: Replace the current implementation to return a collection of SampleItem instances
    WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
    string fullID = ServiceSecurityContext.Current.WindowsIdentity.Name;

    return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello " + fullID } };
}

Я успешно тестирую его на локальном компьютере, затем публикуюэто в IIS7 в Windows Server 2008. В диспетчере IIS я включаю проверку подлинности Windows в приложении и отключаю все другие типы проверки подлинности.Я даю ему свой собственный пул приложений со встроенным управляемым конвейерным режимом.

Я могу успешно увидеть его в проводнике Windows, работающем на компьютере с Win2008 (http://localhost/JobManager/Service1/)

Используя IE 7 с другого компьютера, однако он запрашиваетменя дважды для имени пользователя / пароля, я заполняю его дважды, но во второй раз получаю ошибку 401. (Несанкционированный: доступ запрещен из-за неверных учетных данных.)

1 Ответ

0 голосов
/ 13 октября 2010

Решено путем изменения идентификатора, используемого пулом приложений, на тот, который имеет доступ к службам каталогов.

...