Management <management>
Overview
The <management>
element specifies remote management settings for users that connect to your server using IIS Manager. The <management>
element contains three child elements:
<authentication>
- This child element contains a list of authentication providers in a<providers>
element, and may contain the user names and passwords for IIS Manager user accounts if you are using the default ConfigurationAuthenticationProvider as your authentication provider.<authorization>
- This child element contains a list of authorization providers in a<providers>
element, and may contain the authorization rules for user accounts if you are using the default ConfigurationAuthorizationProvider as your authorization provider.<trustedProviders>
- This child element contains a list of the management providers that are trusted by IIS Manager and the Management Service (WMSVC).
Note
The settings in the <management>
element can only be configured in the Administration.config file.
Compatibility
Version | Notes |
---|---|
IIS 10.0 | The <management> element was not modified in IIS 10.0. |
IIS 8.5 | The <management> element was not modified in IIS 8.5. |
IIS 8.0 | The <management> element was not modified in IIS 8.0. |
IIS 7.5 | The <management> element was not modified in IIS 7.5. |
IIS 7.0 | The <management> element was introduced in IIS 7.0. |
IIS 6.0 | N/A |
Setup
The default installation of IIS 7 and later does not include the Management Service role service. To install this role service, use the following steps.
Windows Server 2012 or Windows Server 2012 R2
- On the taskbar, click Server Manager.
- In Server Manager, click the Manage menu, and then click Add Roles and Features.
- In the Add Roles and Features wizard, click Next. Select the installation type and click Next. Select the destination server and click Next.
- On the Server Roles page, expand Web Server (IIS), expand Management Tools, and then select Management Service. Click Next.
. - On the Select features page, click Next.
- On the Confirm installation selections page, click Install.
- On the Results page, click Close.
Windows 8 or Windows 8.1
- On the Start screen, move the pointer all the way to the lower left corner, right-click the Start button, and then click Control Panel.
- In Control Panel, click Programs and Features, and then click Turn Windows features on or off.
- Expand Internet Information Services, expand Web Management Tools, and then select IIS Management Service.
- Click OK.
- Click Close.
Windows Server 2008 or Windows Server 2008 R2
- On the taskbar, click Start, point to Administrative Tools, and then click Server Manager.
- In the Server Manager hierarchy pane, expand Roles, and then click Web Server (IIS).
- In the Web Server (IIS) pane, scroll to the Role Services section, and then click Add Role Services.
- On the Select Role Services page of the Add Role Services Wizard, select Management Service, and then click Next.
- On the Confirm Installation Selections page, click Install.
- On the Results page, click Close.
Windows Vista or Windows 7
- On the taskbar, click Start, and then click Control Panel.
- In Control Panel, click Programs and Features, and then click Turn Windows Features on or off.
- Expand Internet Information Services, then Web Management Tool.
- Select IIS Management Service, and then click OK.
How To
How to enable IIS Manager credentials for a server
Open Internet Information Services (IIS) Manager:
If you are using Windows Server 2012 or Windows Server 2012 R2:
- On the taskbar, click Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows 8 or Windows 8.1:
- Hold down the Windows key, press the letter X, and then click Control Panel.
- Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
If you are using Windows Server 2008 or Windows Server 2008 R2:
- On the taskbar, click Start, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows Vista or Windows 7:
- On the taskbar, click Start, and then click Control Panel.
- Double-click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
In the Connections pane, click the server name.
In the server's Home pane, double-click Management Service.
On the Management Service page, choose Windows credentials or IIS Manager credentials, then click Apply in the Actions pane.
How to add IIS Manager user credentials to a server
Open Internet Information Services (IIS) Manager:
If you are using Windows Server 2012 or Windows Server 2012 R2:
- On the taskbar, click Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows 8 or Windows 8.1:
- Hold down the Windows key, press the letter X, and then click Control Panel.
- Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
If you are using Windows Server 2008 or Windows Server 2008 R2:
- On the taskbar, click Start, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows Vista or Windows 7:
- On the taskbar, click Start, and then click Control Panel.
- Double-click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
In the Connections pane, click the server name.
In the server's Home pane, double-click IIS Manager Users.
On the IIS Manager Users page, click Add User... in the Actions pane.
In the Add User dialog box, enter the user name and password, and then click OK.
How to authorize an IIS Manager user for a site or application
Open Internet Information Services (IIS) Manager:
If you are using Windows Server 2012 or Windows Server 2012 R2:
- On the taskbar, click Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows 8 or Windows 8.1:
- Hold down the Windows key, press the letter X, and then click Control Panel.
- Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
If you are using Windows Server 2008 or Windows Server 2008 R2:
- On the taskbar, click Start, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows Vista or Windows 7:
- On the taskbar, click Start, and then click Control Panel.
- Double-click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
In the Connections pane, go to the connection, site, application, or directory for which you want to authorize an IIS Manager user.
In the Home pane, double-click IIS Manager Permissions.
On the IIS Manager Permissions page, click Allow User... in the Actions pane.
In the Allow User dialog box, choose IIS Manager, then click Select...
In the Users dialog box, highlight the user account that you want to allow, and then click OK.
In the Allow User dialog box, click OK.
Configuration
Attributes
None.
Child Elements
Element | Description |
---|---|
authentication |
Optional element. Configures authentication settings for remote management of the Web server. |
authorization |
Optional element. Configures authorization settings for remote management of the Web server. |
trustedProviders |
Optional element. Configures the providers that are trusted by IIS Manager and the Management Service (WMSVC). |
Configuration Sample
The following default <management>
element is configured in the Administration.config file in IIS 7 when the Management Service role service is installed.
<management>
<authentication defaultProvider="ConfigurationAuthenticationProvider">
<providers>
<add name="ConfigurationAuthenticationProvider"
type="Microsoft.Web.Management.Server.ConfigurationAuthenticationProvider, Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</authentication>
<authorization defaultProvider="ConfigurationAuthorizationProvider">
<providers>
<add name="ConfigurationAuthorizationProvider"
type="Microsoft.Web.Management.Server.ConfigurationAuthorizationProvider, Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</authorization>
<trustedProviders allowUntrustedProviders="false">
<add type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</trustedProviders>
</management>
The following configuration sample shows how to add an IIS Manager user named ContosoUser to Administration.config.
<credentials>
<add name="ContosoUser" password="Encrypted-Password-Data" enabled="true" />
</credentials>
The following configuration sample shows how to authorize an IIS Manager user named Contoso, a Windows group named Test Group, and a Windows user named Contoso2 to connect to the Default Web Site by using IIS Manager.
<authorizationRules>
<scope path="/Default Web Site">
<add name="Contoso" />
<add name="COMPUTER01\Test Group" isRole="true" />
<add name="COMPUTER01\Contoso2" />
</scope>
</authorizationRules>
Sample Code
The following code samples add an IIS Manager user account named ContosoUser to IIS 7.
AppCmd.exe
Note
You cannot configure <system.webServer/management/authentication>
settings using AppCmd.exe.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetAdministrationConfiguration();
ConfigurationSection authenticationSection = config.GetSection("system.webServer/management/authentication");
ConfigurationElementCollection credentialsCollection = authenticationSection.GetCollection("credentials");
ConfigurationElement addElement = credentialsCollection.CreateElement("add");
addElement["name"] = @"ContosoUser";
addElement["password"] = @"P@ssw0rd";
addElement["enabled"] = true;
credentialsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetAdministrationConfiguration
Dim authenticationSection As ConfigurationSection = config.GetSection("system.webServer/management/authentication")
Dim credentialsCollection As ConfigurationElementCollection = authenticationSection.GetCollection("credentials")
Dim addElement As ConfigurationElement = credentialsCollection.CreateElement("add")
addElement("name") = "ContosoUser"
addElement("password") = "P@ssw0rd"
credentialsCollection.Add(addElement)
addElement("enabled") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject("Microsoft.ApplicationHost.WritableAdminManager");
adminManager.CommitPath = "MACHINE/WEBROOT";
adminManager.SetMetadata("pathMapper", "AdministrationConfig");
var authenticationSection = adminManager.GetAdminSection("system.webServer/management/authentication", "MACHINE/WEBROOT");
var credentialsCollection = authenticationSection.ChildElements.Item("credentials").Collection;
var addElement = credentialsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ContosoUser";
addElement.Properties.Item("password").Value = "P@ssw0rd";
addElement.Properties.Item("enabled").Value = true;
credentialsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT"
adminManager.SetMetadata "pathMapper", "AdministrationConfig"
Set authenticationSection = adminManager.GetAdminSection("system.webServer/management/authentication", "MACHINE/WEBROOT")
Set credentialsCollection = authenticationSection.ChildElements.Item("credentials").Collection
Set addElement = credentialsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ContosoUser"
addElement.Properties.Item("password").Value = "P@ssw0rd"
addElement.Properties.Item("enabled").Value = True
credentialsCollection.AddElement(addElement)
adminManager.CommitChanges()
The following code samples check to see if a <scope>
element has already been added to the <authorizationRules>
element for the Default Web Site; if not, a <scope>
element is added the <authorizationRules>
element. Next, an <add>
element is added to the <scope>
element that authorizes a user account named ContosoUser.
AppCmd.exe
Note
You cannot configure <system.webServer/management/authorization>
settings using AppCmd.exe.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetAdministrationConfiguration();
ConfigurationSection authorizationSection = config.GetSection("system.webServer/management/authorization");
ConfigurationElementCollection authorizationRulesCollection = authorizationSection.GetCollection("authorizationRules");
ConfigurationElement scopeElement = FindElement(authorizationRulesCollection, "scope", "path", @"/Default Web Site");
if (scopeElement == null)
{
scopeElement = authorizationRulesCollection.CreateElement("scope");
scopeElement["path"] = @"/Default Web Site";
authorizationRulesCollection.Add(scopeElement);
}
ConfigurationElementCollection scopeCollection = scopeElement.GetCollection();
ConfigurationElement addElement = scopeCollection.CreateElement("add");
addElement["name"] = @"ContosoUser";
scopeCollection.Add(addElement);
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetAdministrationConfiguration
Dim authorizationSection As ConfigurationSection = config.GetSection("system.webServer/management/authorization")
Dim authorizationRulesCollection As ConfigurationElementCollection = authorizationSection.GetCollection("authorizationRules")
Dim scopeElement As ConfigurationElement = FindElement(authorizationRulesCollection, "scope", "path", "/Default Web Site")
If (scopeElement Is Nothing) Then
scopeElement = authorizationRulesCollection.CreateElement("scope")
scopeElement("path") = "/Default Web Site"
authorizationRulesCollection.Add(scopeElement)
End If
Dim scopeCollection As ConfigurationElementCollection = scopeElement.GetCollection
Dim addElement As ConfigurationElement = scopeCollection.CreateElement("add")
addElement("name") = "ContosoUser"
scopeCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject("Microsoft.ApplicationHost.WritableAdminManager");
adminManager.CommitPath = "MACHINE/WEBROOT";
adminManager.SetMetadata("pathMapper", "AdministrationConfig");
var authorizationSection = adminManager.GetAdminSection("system.webServer/management/authorization", "MACHINE/WEBROOT");
var authorizationRulesCollection = authorizationSection.ChildElements.Item("authorizationRules").Collection;
var scopeElementPos = FindElement(authorizationRulesCollection, "scope", ["path", "/Default Web Site"]);
if (scopeElementPos == -1)
{
var scopeElement = authorizationRulesCollection.CreateNewElement("scope");
scopeElement.Properties.Item("path").Value = "/Default Web Site";
authorizationRulesCollection.AddElement(scopeElement);
}
else
{
var scopeElement = authorizationRulesCollection.Item(scopeElementPos);
}
var scopeCollection = scopeElement.Collection;
var addElement = scopeCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ContosoUser";
scopeCollection.AddElement(addElement);
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT"
adminManager.SetMetadata "pathMapper", "AdministrationConfig"
Set authorizationSection = adminManager.GetAdminSection("system.webServer/management/authorization", "MACHINE/WEBROOT")
Set authorizationRulesCollection = authorizationSection.ChildElements.Item("authorizationRules").Collection
scopeElementPos = FindElement(authorizationRulesCollection, "scope", Array("path", "/Default Web Site"))
If scopeElementPos = -1 Then
Set scopeElement = authorizationRulesCollection.CreateNewElement("scope")
scopeElement.Properties.Item("path").Value = "/Default Web Site"
authorizationRulesCollection.AddElement(scopeElement)
Else
Set scopeElement = authorizationRulesCollection.Item(scopeElementPos)
End If
Set scopeCollection = scopeElement.Collection
Set addElement = scopeCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ContosoUser"
scopeCollection.AddElement(addElement)
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function