2010-09-27 6 views
1

J'utilise actuellement System.DirectoryServices.DirectoryEntry et la propriété 'AuthFlags' pour définir l'accès anonyme à un site Web virtuel. Pour activer l'accès anonyme, attribuez-lui la valeur 1. Quelle valeur dois-je définir pour activer l'authentification par formulaire?Activer par programmation l'authentification par formulaires dans IIS 7.0

J'ai cette idée dans le dos de ma tête que peut-être ce n'est que via le web.config?

Répondre

3

Je remarque que vous utilisez System.DirectoryServices pour configurer ces fonctionnalités sur IIS7 (en fonction de vos tags).

Dans IIS7 vous pouvez configurer ces deux paramètres à l'aide de la bibliothèque Microsoft.Web.Administration à la place:

Réglage du type d'authentification (remplace AuthFlags):

IIS 7 Configuration: Security Authentication <authentication>

Pour configurer l'authentification par formulaire:

using Microsoft.Web.Administration; 
    ... 
long iisNumber = 1234; 
using(ServerManager serverManager = new ServerManager()) 
{ 
    Site site = serverManager.Sites.Where(s => s.Id == iisNumber).Single(); 

    Configuration config = serverManager.GetWebConfiguration(site.Name); 
    ConfigurationSection authenticationSection = 
       config.GetSection("system.web/authentication"); 
    authenticationSection.SetAttributeValue("mode", "Forms"); 

    ConfigurationSection authorizationSection = 
       config.GetSection("system.web/authorization"); 
    ConfigurationElementCollection addOrDenyCollection = 
       authorizationSection.GetCollection(); 
    ConfigurationElement allowElement = addOrDenyCollection.CreateElement("allow"); 
    allowElement["users"] = "?"; 

    addOrDenyCollection.Add(allowElement); 
    serverManager.CommitChanges(); 
} 

Le code ci-dessus va créer un nouveau fichier web.config à la racine du site ou modifier un fichier existant. Pour ajouter Microsoft.Web.Administration, ajoutez une référence à C:\Windows\System32\InetSrv\Microsoft.Web.Administration.dll.

+0

donc un peu comme je le disais dans mon dernière phrase, vous dites que la meilleure façon est de simplement modifier le web.config? Merci pour ce btw. –

+0

@zip - oui ce serait le moyen de le faire. – Kev

2

Je recommanderais une approche légèrement différente si vous maintenez IIS 7 ou 7.5. Les concepts sont similaires, mais désaccentuer l'ASP.Net orienté <system.web> dans l'application locale web.config dans le commerce pour mettre en évidence le système < orienté IIS system.webServer > dans le serveur applicationHost.config.

Démarrer en bas de ce lien et faites défiler jusqu'à ... http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication

Imports System 
Imports System.Text 
Imports Microsoft.Web.Administration 

Module Sample 
    Sub Main() 
     Dim serverManager As ServerManager = New ServerManager 
     Dim config As Configuration = serverManager.GetApplicationHostConfiguration 

     Dim anonymousAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Default Web Site/App1") 
     anonymousAuthenticationSection("enabled") = False 

     Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site/App1") 
     windowsAuthenticationSection("enabled") = True 

     serverManager.CommitChanges() 
    End Sub 
End Module 

L'approche de base est de faire des changements dans Gestionnaire des services Internet et observer comment l'hôte de l'application des modifications de configuration pour cette application. Vous répliquez ensuite ces modifications en pilotant la nouvelle assembly Microsoft.Web.Administration correctement.

Localisation:% systemroot% \ system32 \ inetsrv \ config \ applicationHost.config

choses à rechercher:

<location path="Default Web Site/App1"> 
    <system.webServer> 
     <security> 
      <authentication> 
       <anonymousAuthentication enabled="true" /> 
       <windowsAuthentication enabled="true" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</location> 
+0

Ce que je ne comprends pas, c'est d'où vient le/App1? –

1

Source

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.GetApplicationHostConfiguration(); 

     ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso"); 
     anonymousAuthenticationSection["enabled"] = false; 

     ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso"); 
     windowsAuthenticationSection["enabled"] = true; 

     serverManager.CommitChanges(); 
     } 
    } 
} 
Questions connexes