在 IIS Web 服务器上使用 Powershell 时访问被拒绝

本文关键字:Powershell 访问 拒绝 IIS Web 服务器 | 更新日期: 2023-09-27 18:35:31

我有一个为我的0ffice 365用户设置的密码重置网站。 它在后台运行 powershell 命令以重置用户密码。 出于某种原因,当我使用 VS 并且我使用页面运行浏览器时,它工作正常。 但是当我从实时站点运行它时,我收到此错误

Processing data from remote server failed with the following error message: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. 

该页面 aspx.net C# 代码隐藏。

我尝试使用模拟器类,但这也不起作用。

这是我的一些代码。

 using (new Impersonator("user", "domain", "pass"))
    {
        PSCredential creds = new PSCredential("office365email", "password");
        WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
            new Uri("https://server.outlook.com/PowerShell-LiveID?PSVersion=2.0"),
            "http://schemas.microsoft.com/powershell/Microsoft.Exchange", creds);
        connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;

        Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
        runspace.ApartmentState = System.Threading.ApartmentState.STA;
        runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
        try
        {

            runspace.Open();

            pipeline = runspace.CreatePipeline();
            Command forwardcommand = new Command("Set-Mailbox");
            forwardcommand.Parameters.Add("Identity", user);
            forwardcommand.Parameters.Add("Password", pass);


            pipeline.Commands.Add(forwardcommand);
            try
            {
                pipeline.Invoke();

                runspace.Close();
                pipeline.Stop();
                return "Password Successfully Changed";

            }
            catch (Exception er)
            {
                runspace.Close();
                pipeline.Stop();
                return er.Message;

            }
        }
        catch (PSRemotingTransportException eer)
        {
            runspace.Close();

            return eer.Message;// "Server busy please try again later";
        }
    }

有什么想法为什么我不能从实际网站上做到这一点,但我可以在我的本地主机上做?

<authentication mode="Windows"/>
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
        <providers>
            <clear/>
            <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/>
            <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider"/>
        </providers>
    </roleManager>
    <identity impersonate="true"/>

在 IIS Web 服务器上使用 Powershell 时访问被拒绝

在IIS中,我将ApplicationPoolIdentity更改为LocalService。 这解决了在发布之前运行已发布的 Visual Studio 网站时运行正常时出现的"拒绝访问"错误。

这可能是"双跃点"身份/安全问题。

在本地主机上运行时,Windows 标识在同一台计算机上是已知的。
在 Web 服务器上运行时,至少还涉及一台计算机。

相关问题包括:IIS 使用什么标识来运行网页?该 ID 是否有权使用网络?该 ID 是否有权在远程服务器上执行密码重置?