Приложение для Магазина Windows с корпоративной аутентификацией и олицетворением

Укороченная версия: Почему, когда я имитирую веб-запрос, сделанный приложением Магазина Windows, я получаю объект WindowsIdentity с правильным именем пользователя, но его свойство IsAuthenticated возвращает False? Выполнение того же запроса из браузера (включая Metro IE10) дает IsAuthenticated == true.

Длинная версия: я

m создание прототипа внутреннего корпоративного решения, состоящего из WCF-сервиса и приложения WinJS. WCF-сервис основан на webHttpBinding (то есть простых запросах GET / POST).

Определенные действия необходимо обрабатывать от имени пользователя, делающего запрос, поэтому служба настроена на олицетворение своих абонентов. Вот пример конфигурации:


  
    
      
        
          
        
      
    
  
    
      
        
          
        
      
        
            
                
                
            
        
    
    
        
            
                
                    
                
            
            
                
                    
                
            
        
    

... и код:

public class WcfService : IWcfService
{
    [OperationBehavior(Impersonation=ImpersonationOption.Required)]
    public UserInfo GetUserInfo()
    {
        UserInfo ui = new UserInfo();
        WindowsIdentity identity = ServiceSecurityContext.Current.WindowsIdentity;

        ui.UserName = identity.Name;
        ui.IsAuthenticated = identity.IsAuthenticated;
        ui.ImpersonationLevel = identity.ImpersonationLevel.ToString();
        ui.IsAnonymous = identity.IsAnonymous;
        ui.IsGuest = identity.IsGuest;
        ui.IsSystem = identity.IsSystem;
        ui.AuthenticationType = identity.AuthenticationType;

        return ui;
    }
}

Таким образом, эта операция просто собирает информацию о вызывающем абоненте и отправляет ее обратно в строку json.

Переезд к клиенту. Чтобы включить автоматическую аутентификацию я проверил "Аутентификация предприятия ","Интернет (Клиент) " а также "Частные сети " в приложении Магазина Windows »файл манифеста.

Из приложения Магазина Windows я отправляю запрос с помощью функции WinJS.xhr:

    var options = {
        url: "http://localhost:8787/getuserinfo"
    };

    WinJS.xhr(options).then(function (xhrResponse) {
        var userInfoBlock = document.getElementById("userInfoBlock");
        var data = JSON.parse(xhrResponse.response);

        userInfoBlock.innerHTML += ""

        for (var p in data) {
            if (data.hasOwnProperty(p)) {
                userInfoBlock.innerHTML += "" + p + ": " + data[p] + "";
            }
        }

        userInfoBlock.innerHTML += "";
    });

Теперь, когда я запускаю приложение Магазина Windows и оно отправляет запрос, я получаю ответ:

AuthenticationType: "NTLM"
ImpersonationLevel: "Impersonation"
IsAnonymous: false
IsAuthenticated: false
IsGuest: false
IsSystem: false
UserName: "TESTBOX\dev"

Если я отправлю запрос через браузерс адресной строки, я получаю тот же ответ, с той лишь разницей, что "IsAuthenticated: true ".

Я также заметил, что если я отключуАутентификация предприятия », он вызывает всплывающее окно «Учетные данные» и после предоставления правильных учетных данных яя получаюIsAuthenticated: true ".

Я что-то упускаю или ожидаю слишком многого от возможности EnterpriseAuthentication?