C# - 以编程方式创建IIS用户

时间:2014-08-13 07:28:31

标签: iis

我开发了一个用于创建和管理FTP站点和IIS用户的应用程序。

有一种创建IIS用户的方法:

   public static void CreateIisUser(string userName, string password)
    {
        using (var serverManager = new ServerManager())
        {
            var config = serverManager.GetAdministrationConfiguration();
            var authenticationSection = config.GetSection("system.webServer/management/authentication");
            var credentialsCollection = authenticationSection.GetCollection("credentials");

            var exist = credentialsCollection.Any(m => (string)m["name"] == userName);

            if (exist)
            {
                return;
            }

            var addElement = credentialsCollection.CreateElement("add");
            addElement["name"] = userName;
            addElement["password"] = password;
            addElement["enabled"] = true;
            credentialsCollection.Add(addElement);

            serverManager.CommitChanges();
        }
    }

它有效,但由于密码不正确,我无法访问FTP文件夹。

通过IIS管理器更改用户密码对我有帮助。

我的代码有什么问题?

感谢。

1 个答案:

答案 0 :(得分:1)

密码应使用SHA-256加密:

        public static string HashSha256(string value)
    {
        var sb = new StringBuilder();

        using (var hash = SHA256Managed.Create())
        {
            var enc = Encoding.UTF8;
            var result = hash.ComputeHash(enc.GetBytes(value));

            foreach (var b in result)
            {
                sb.Append(b.ToString("x2"));
            }
        }

        var hashSha256 = sb.ToString().ToUpper();

        return hashSha256;
    }