Я ищу построить доказательство концепции/демо-страницы, которая будет:Запрос учетных данных на странице ASP.NET/C#, перейти к PowerShell
- работает как сервис (без аутентификации требуется изначально)
- Запросить учетные данные (то есть разрешить предоставление альтернативных учетных данных, в идеале захватить это как System.Management.Automation.PSCredential). Здесь не требуется аутентификация, мне просто нужно получить учетные данные.
- Pass полномочия в к PowerShell (например shell.Commands.AddArgument (pscred))
- Используйте эти учетные данные в PowerShell (передать в качестве, или преобразовать в System.Management.Automation.PSCredential)
- Для уточнения: I не хотите аутентифицировать учетные данные. Я просто хочу собрать их безопасным способом. Мне все равно на данный момент, это бред, но бред, что я предположительно хочу защитить
У меня есть веб-проект приложения ASP.NET с Visual C# (по аналогии с одним here). У меня запущена и запущена страница (т. Е. Она работает с соответствующей учетной записью, она запускает PowerShell и т. Д.). Я хочу запросить и хранить учетные данные в разумно защищенном виде. Я предполагаю, что есть стандартный способ сделать это. Или я слишком много читаю об этом, так как это приложение на стороне сервера?
Вот выдержки из моего кода до сих пор:
Default.aspx (они будут меняться в зависимости от сценария):
<asp:TextBox ID="Input" runat="server" TextMode="MultiLine" Width="400px" Height="73px" ></asp:TextBox> <asp:TextBox ID="InputParam" runat="server" TextMode="MultiLine" Width="200px" Height="20px" ></asp:TextBox> <asp:Button ID="ExecuteCode" runat="server" Text="Execute" Width="200" onclick="ExecuteCode_Click" /> <asp:TextBox ID="ResultBox" TextMode="MultiLine" Width="700" Height="200" runat="server"></asp:TextBox> <asp:TextBox ID="ErrorBox" TextMode="MultiLine" Width="700" Height="200" runat="server"></asp:TextBox>
Default.aspx.cs:
protected void ExecuteCode_Click(object sender, EventArgs e) { // Clean the Result TextBox ResultBox.Text = string.Empty; // Initialize PowerShell engine var shell = PowerShell.Create(); // Add the script and an argument to the PowerShell object shell.Commands.AddScript(Input.Text); shell.Commands.AddArgument(InputParam.Text); // Execute the script var results = shell.Invoke(); // display results, with BaseObject converted to string // Note : use | out-string for console-like output if (results.Count > 0) { // We use a string builder ton create our result text var builder = new StringBuilder(); foreach (var psObject in results) { // Convert the Base Object to a string and append it to the string builder. // Add \r\n for line breaks builder.Append(psObject.BaseObject.ToString() + "\r\n"); } // Encode the string in HTML (prevent security issue with 'dangerous' caracters like < > ResultBox.Text = Server.HtmlEncode(builder.ToString()); } //Collect errors var PSErrors = shell.Streams.Error.ReadAll(); if (PSErrors != null) { // We use a string builder ton create our error text var builder = new StringBuilder(); foreach (var psError in PSErrors) { // Convert the exception Object to a string and append it to the string builder. // Add \r\n for line breaks builder.Append(psError.Exception.ToString() + "\r\n"); } // Encode the string in HTML (prevent security issue with 'dangerous' caracters like < > ErrorBox.Text = Server.HtmlEncode(builder.ToString()); } }
This code не будет работать из-за того, что я понимаю, bu Это концепция именно то, что я ищу.
PSCredential pscred = this.Host.UI.PromptForCredential("Enter username/password","", "", ""); shell.Commands.AddArgument(pscred);
Похоже, что некоторые люди интерпретировали ваш вопрос с вопросом о стиле «рекомендации» (просьба о библиотеке или что-то в этом роде для решения вашей проблемы). Я не уверен, что это то, что вы делали, но я думаю, что вы могли бы подойти к вопросу лучше (чтобы сделать его «по-теме» для переполнения стека). Я думаю, что этот вопрос заслуживает повторного открытия, если вы разместите какой-то код с вашей попыткой собрать/сохранить/передать информацию, которая вам нужна, а затем описать, где вы застряли. – jadarnel27