Команды Git через powershell через IIS имеют неправильную идентификацию пользователя?

Я создал веб-сайт ASP.NET. Я установил столько настроек, сколько знаю, как установить для своей личной учетной записи пользователя, в том числе:

  • Идентификатор пула приложений настроен на мою личную учетную запись пользователя.
  • Аутентификация для параметров «Анонимный» и «Олицетворение ASP.NET» настроена явно для моей личной учетной записи пользователя, и оба включены.

Когда веб-приложение выполняет запрос, оно вызывает PowerShell для запуска команды «git config». При вызове PowerShell я также указываю параметр вызова FlowImpersonationPolicy, просто чтобы убедиться, что правильная идентификация проходит весь путь до git. Во время выполнения, непосредственно перед вызовом PowerShell веб-приложением, значение System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString() действительно является моей учетной записью пользователя.

Проблема в том, что вывод «git config» отличается, когда я запускаю приложение в Visual Studio, и когда я запускаю его, размещенный на моем локальном экземпляре IIS, который настроен, как я описал выше. Когда я запускаю веб-приложение в Visual Studio, появляется то же удостоверение, что и в IIS, но выходные данные git config отличаются.

Когда он запускает git config --show-origin -l из версии, размещенной в Visual Studio, я вижу, что он правильно выбирает глобальные настройки для моей учетной записи пользователя в «c:\users\myusername.gitconfig». Однако, когда одно и то же веб-приложение запускается в IIS, команда не выводит список конфигураций в этом расположении.

Таким образом, похоже, что команда git не работает под моей учетной записью пользователя или не знает о ней, хотя кажется, что все вызывается моей учетной записью пользователя. Я что-то упускаю?


person Triynko    schedule 09.01.2019    source источник
comment
Я даже добавил [System.Security.Principal.WindowsIdentity]::GetCurrent().Name в сценарий powershell, и он использует правильный идентификатор. Поэтому я понятия не имею, почему «git config» в контексте размещения в IIS не может найти глобальные пользовательские настройки, но находит их в порядке при запуске в том же коде, размещенном IIS Express в Visual Studio.   -  person Triynko    schedule 09.01.2019
comment
Хммм... Я использовал «everything.exe», чтобы найти все файлы .gitconifg на моем диске, и нашел один в C:\Windows\System32\config\systemprofile. Разумеется, это значение по умолчанию для моей учетной записи пользователя, которую, как я полагаю, я создал, выполнив команду «git config --global --edit» в приложении в попытке найти ее местоположение. Он был без окон, поэтому я никогда не видел редактора, но по наличию этого файла могу сделать вывод, что он его создал. Итак, теперь вопрос: почему моя личность является моей учетной записью пользователя, а профиль - это какой-то системный профиль в IIS? Загружен не тот профиль?   -  person Triynko    schedule 09.01.2019
comment
Даже если я скопирую файл .gitconfig моего пользователя поверх этого, и git подберет все правильные настройки... они все равно не будут использоваться правильно, вероятно, из-за этого фиктивного/неправильного системного профиля, который IIS пытается использовать вместо моего собственного профиль пользователя. Таким образом, такие вещи, как «wincred» в качестве диспетчера учетных данных, вероятно, ищут не в том месте. Это очень раздражает. Мне нужен способ действительно запустить запрос IIS от имени конкретного пользователя, со всеми наворотами, связанными с профилем, и без этой ерунды с системным профилем. Отлично работает в IIS Express, но не в IIS.   -  person Triynko    schedule 09.01.2019
comment
Связано: stackoverflow.com/questions/9490107/   -  person Triynko    schedule 10.01.2019


Ответы (1)


Кажется, что в IIS есть скрытый параметр, который не отображается через пользовательский интерфейс диспетчера IIS.

Параметр «loadUserProfile» находится в пользовательском интерфейсе. и имеет значение true, но есть еще один параметр, называемый setProfileEnvironment, который также должен иметь значение true, чтобы профиль пользователя действительно работал и был виден Git и другим процессам, запущенным из IIS.

Этот параметр находится в разделе processModel пула приложений в файле «%WINDIR%\System32\inetsrv\Config\applicationHost.config». Вы можете изменить значения по умолчанию для параметра в разделе applicationPoolDefaults/processModel или просто изменить параметры для раздела processModel отдельного пула приложений.

Настройки хоста system.application

К сожалению, эти параметры не отображаются в пользовательском интерфейсе диспетчера IIS. например Загрузить профиль пользователя.

введите здесь описание изображения

person Triynko    schedule 10.01.2019
comment
К сожалению, хотя Git получает правильные значения конфигурации из настроек профиля, я все еще получаю ошибки подключения. Таким образом, есть еще что-то в том, как команда выполняется в IIS по сравнению с IIS Express. Эта непонятная настройка, которую нужно было включить только для правильной настройки, не дает мне большой надежды найти что-то еще, что может потребоваться установить. - person Triynko; 11.01.2019