2010-10-13 6 views
0

У меня возникли трудности с аутентификацией Windows в приложении WCF REST.Windows Имя пользователя в WCF 4 Rest

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

Я изменил 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 в приложении и отключает все другие типы проверки подлинности. Я даю ему свой собственный пул приложений с интегрированным режимом управляемого конвейера.

Я могу успешно увидеть в окне проводника работает на машине Win2008 (HTTP: // локальный/JobManager/Service1 /)

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

ответ

0

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