通过Powershell通过IIS进行的Git命令具有错误的用户身份?

时间:2019-01-09 06:52:00

标签: git powershell iis impersonation git-config

我建立了一个ASP.NET网站。我设置了许多我知道如何设置到我的个人用户帐户的设置,包括:

  • 该应用程序池标识已设置为我的个人用户帐户。
  • “匿名”和“ ASP.NET模拟”设置的身份验证已明确设置为以我的个人用户帐户为目标,并且都已启用。

当Web应用执行请求时,它将调用PowerShell以运行“ git config”命令。调用PowerShell时,我还为FlowImpersonationPolicy指定了调用选项,只是为了确保正确的身份使它一直到git。在运行时,在Web应用程序调用PowerShell之前,System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString()的值确实是我的用户帐户。

问题在于,当我在Visual Studio中运行该应用程序时,与我在本地IIS实例上托管的应用程序上运行该应用程序时,'git config'的输出不同,如上所述。当我在Visual Studio中运行Web应用程序时,将显示与IIS中相同的身份,但是git config的输出不同。

当它从Visual Studio托管版本运行git config --show-origin -l时,我看到它正确地为我的用户帐户选择了“ c:\ users \ myusername.gitconfig”的全局设置。但是,当同一Web应用程序运行在IIS下部署时,该命令不会列出该位置的配置。

所以git命令似乎没有在我的用户帐户下运行或不知道我的用户帐户,即使一切似乎都由我的用户帐户调用。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

似乎IIS中存在一个隐藏的设置,该设置没有通过IIS Manager U.I公开。

“ loadUserProfile”选项位于U.I.并且设置为true,但是还有一个名为“ setProfileEnvironment”的设置,还必须将其设置为true,以使用户配置文件真正起作用,并且对IIS启动的Git和其他进程可见。

该设置在文件“%WINDIR%\ System32 \ inetsrv \ Config \ applicationHost.config”中的应用程序池的processModel部分下。您可以在applicationPoolDefaults / processModel部分中更改设置的默认值,也可以仅更改单个应用程序池的processModel部分中的设置。

system.applicationHost settings

不幸的是,此设置未在IIS Manager U.I中公开。例如“加载用户个人资料”。

enter image description here