2016-01-22 8 views
2

Публикация ASP-сайта по умолчанию для визуальной студии на IIS. Все в порядке.проверка подлинности Windows с Entity Framework и IIS

Я установил конец аутентификации окон с некоторым усилием в верхнем углу, и я получил Welcome MyDomain/MyAcount !.

Прохладный!

Позже у меня был простой EF-запрос к коду (он работает в локальном я получаю результат) MyDomain/MyAcount существует как учетная запись SQL-окон, все в порядке.

Probleme, когда в приложении пул EF не использовать текущий пользователь «MyDomain/MyAcount», которые показывают в верхнем Rigth углу, но использовать учетную запись пула «Autorité NT \ NETWORK»

и бросить хорошая ошибка авторизации на странице, содержащей запрос EF.

здесь мой EF Строка соединения:

<connectionStrings> 
    <add connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=M35824\MSQL32BIT;initial catalog=UNITY_DB_PROD;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" name="UNITY_DB_PRODEntities" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

Я не хочу давать Rigth на «Autorité NT \ NETWORK» в SQL это помогло бы, но его мне не нужно каждый запрос и хранимые процедуры должны EXEC, как «подключенный пользователь»

ответ

0

Интегрированная система безопасности - если установлено неверное значение, идентификатор пользователя и пароль . Когда true, для аутентификации используются текущие учетные данные Windows . Source

так .. Я думаю EF получать эту информацию от МКС, где вам нужно изменить вам страницу Pool. идентификатор пула приложений «MyDomain/MyAcount» ... ИЛИ установить его на false

2

Чтобы перенаправить свои учетные данные на sql-сервер или просто определить другую учетную запись для пула приложений, вам необходимо использовать impersonation, если вам нужно использовать встроенную проверку подлинности ,

+0

Я недостаточно активен, чтобы не спускать вниз, но этот ответ напрямую нарушает правила ответа на переполнение стека. В частности, ответы должны содержать подробное описание решения, а не просто ссылку в другом месте, поскольку внешний сайт может легко уйти, переместить и т. Д. Вы даже связались со статьей с предупреждающим баннером наверху, в котором говорится, что этот документ не поддерживается. Ответы должны решить проблему на 100% с автономным контентом и только ссылку на внешние источники для дальнейшего чтения, если вас это интересует. – James

1

Я использовал это для олицетворения finaly, не знаю, является ли его хорошим способом сделать это, но, по крайней мере, он работает, как ожидалось, не удастся выполнить олицетворение строки подключения.

public static List<List<string>> GetCountryData() 
     { 
      List<List<string>> DataRows = null; 
      using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
      { 
       using (var dbContext = new UNITY_DB_PRODEntities()) 
       { 

        DataRows = dbContext.final_full_data.Where(x => x.computername.Contains("m570")).Select(x => new List<string> { x.computername, x.DCAI_CENTRE, x.AD_CN }).AsEnumerable().ToList(); 
       } 
      } 
      return DataRows; 
     } 

не стесняйтесь предоставлять другой метод.

+0

Как вы используете аутентификацию интеграции Windows, вы можете попробовать добавить под в свой файл web.config. Хотя это приведет к тому, что все приложение будет запущено под учетной записью пользователя. – lobiZoli