ActiveDirectory にユーザーを作成する ASP.NET Web アプリケーションを作成しましたが、IIS7 にインストールすると、広告にユーザーを追加する権限がないというエラーが表示されます。これを実行できるサービスを作成したいのですが、同じ問題があります。コマンドは Powershell コマンドで、ActiveDirectory のモジュールをインストールしました。
ここに私のプロジェクトに関するいくつかの情報があります:
私のasmxコード:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Security;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Management.Automation.Remoting;
using System.Security;
using System.Security.Cryptography;
using System.IO;
namespace ActiveDirectoryService
{
/// <summary>
/// Zusammenfassungsbeschreibung für Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Um das Aufrufen dieses Webdiensts aus einem Skript mit ASP.NET AJAX zuzulassen, heben Sie die Auskommentierung der folgenden Zeile auf.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public string Connectiontest()
{
return "Die Verbindung besteht";
}
[WebMethod]
public string GetUsername()
{
return User.Identity.Name;
}
[WebMethod]
public string CreateADUserInNPS(string macAdress)
{
string prefix = "test";
string principlename = macAdress + "@company-test.com";
string gn = "test";
string sn = "test";
string Path = "..."; //The path is correct but I don't want show this
return AddNewUser(prefix, macAdress, principlename, gn, sn, Path);
}
public string AddNewUser(string prefix, string macAdress, string principlename,
string gn, string sn, string path)
{
SecureString SECUREADADMINPASSWORD = new SecureString();
foreach (char x in macAdress)
{
SECUREADADMINPASSWORD.AppendChar(x);
}
InitialSessionState initial = InitialSessionState.CreateDefault();
Environment.SetEnvironmentVariable("ADPS_LoadDefaultDrive", "0");
initial.ImportPSModule(new string[] { "ActiveDirectory" });
using (Runspace runspace = RunspaceFactory.CreateRunspace(initial))
{
runspace.Open();
using (Pipeline p = runspace.CreatePipeline())
{
Command command = new Command("New-ADUser");
command.Parameters.Add("Name", prefix);
command.Parameters.Add("sAMAccountName", macAdress);
command.Parameters.Add("UserPrincipalName", principlename);
command.Parameters.Add("GivenName", gn);
command.Parameters.Add("SurName", sn);
command.Parameters.Add("displayname", macAdress);
command.Parameters.Add("enabled", true);
command.Parameters.Add("Path", path);
command.Parameters.Add("AllowReversiblePasswordEncryption", true);
command.Parameters.Add("PasswordNeverExpires", true);
command.Parameters.Add("AccountPassword", SECUREADADMINPASSWORD);
p.Commands.Add(command);
string pscommand = "New-ADUser " + prefix + " -SamAccountName " + macAdress +
" -UserPrincipalName " + macAdress + "@company-test.com -GivenName " + gn + // @company-test.com aus cfg
" -SurName " + sn + " -displayname " + macAdress + " -enabled $true -Path " + path +
" -AllowReversiblePasswordEncryption $true -PasswordNeverExpires $true -AccountPassword (ConvertTo-Securestring" +
" '" + macAdress + "'" + " -asplaintext -Force)";
try
{
p.Invoke(); //I think here comes the Error with not the rights
return "erfolg";
}
catch (Exception ex)
{
return "Meldung: " + ex.Message;
}
}
}
}
}
}
私のクライアントでは動作しますが、IIS7 にインストールすると動作しません。
私のaspxコード:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ActiveDirectoryCenter.serv;
namespace ActiveDirectoryCenter
{
public partial class main : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnConnectionTest_Click(object sender, EventArgs e)
{
serv.Service1 service = new Service1();
service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
lblConnection.Text = service.Connectiontest();
}
protected void btnGetUsername_Click(object sender, EventArgs e)
{
serv.Service1 service = new Service1();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
lblUsername.Text = service.GetUsername();
}
protected void btncreateADUser_Click(object sender, EventArgs e)
{
serv.Service1 service = new Service1();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
lblstatus.Text = service.CreateADUserInNPS(txtMacAdress.Text);
}
}
}
ここでアイデア
最初はサービスなしで作成しましたが、今はメソッドを持つ aspx サイトとサービスが必要です。サービスを次のように構成します。
難しい質問だと思いますが、助けてもらえるかもしれません:(