Partager via


Exemple d'implémentation d'un fournisseur de rôles

Mise à jour : novembre 2007

Décrit l'exemple d'un fournisseur de rôles et le schéma de source de données pris en charge.

Les rubriques suivantes incluent le code d'un exemple d'implémentation d'un fournisseur de rôles. L'exemple de fournisseur utilise le fournisseur de données .NET Framework pour ODBC pour se connecter à une source de données ODBC. L'exemple utilise une base de données Access comme source de données.

Cette rubrique décrit comment implémenter l'exemple de fournisseur de profils et configurer une application ASP.NET pour l'utiliser.

Remarque :

Étant donné que les sources de données diffèrent sur le plan de la syntaxe SQL, certaines commandes ne fonctionneront qu'avec une source de données particulière. Par conséquent, vous devez créer un fournisseur de rôles spécifique à votre source de données même si vous utilisez le fournisseur de données .NET Framework pour ODBC ou le fournisseur de données .NET Framework pour OLEDB pour accéder à votre source de données, par exemple SybaseProfileProvider ou OracleProfileProvider.

Pour afficher le code de l'exemple de fournisseur, consultez Comment : échantillonner l'implémentation d'un fournisseur de rôles.

Schéma de base de données

L'exemple de fournisseur de rôles utilise deux tables de base de données pour gérer les informations relatives aux rôles : une table Roles qui contient des noms de rôles et d'applications et une table UsersInRoles utilisée pour associer un nom d'utilisateur à un nom de rôle d'une application.

Pour créer les tables Access utilisées par l'exemple de fournisseur, émettez la requête de définition de données suivante dans une base de données Access nouvelle ou existante.

CREATE TABLE Roles
(
  Rolename Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
    CONSTRAINT PKRoles PRIMARY KEY (Rolename, ApplicationName)
)

CREATE TABLE UsersInRoles
(
  Username Text (255) NOT NULL,
  Rolename Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
    CONSTRAINT PKUsersInRoles PRIMARY KEY (Username, Rolename, ApplicationName)
)

Accès au journal des événements

Si l'exemple de fournisseur rencontre une exception lorsqu'il travaille avec la source de données, il écrit les détails de l'exception dans le journal des événements de l'application plutôt que de retourner l'exception à l'application ASP.NET. Cette opération est exécutée comme une mesure de sécurité visant à éviter l'exposition des informations privées relatives à la source de données dans l'application ASP.NET.

L'exemple de fournisseur spécifie un événement Source « OdbcRoleProvider ». Avant que votre application ASP.NET ne puisse écrire correctement dans le journal des événements de l'application, vous devez créer la clé de Registre suivante.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcRoleProvider

Si vous ne souhaitez pas que l'exemple de fournisseur écrive des exceptions dans le journal des événements, vous pouvez affecter à l'attribut writeExceptionsToEventLog la valeur false dans le fichier Web.config.

Génération de l'exemple de fournisseur

Pour utiliser l'exemple de fournisseur, vous pouvez placer votre code source dans le répertoire App_Code de votre application. Notez que, si vous avez déjà le code source dans le répertoire App_Code de votre application, vous devez ajouter la version de l'exemple de fournisseur qui est écrite dans le même langage que le code existant dans le répertoire. Le fournisseur sera compilé par ASP.NET lorsque votre application sera demandée.

Vous pouvez aussi compiler l'exemple de fournisseur en tant que bibliothèque et le placer dans le répertoire Bin de votre application Web, ou lui affecter un nom fort et le placer dans le GAC. La commande suivante montre comment compiler l'exemple de fournisseur à l'aide du compilateur de ligne de commande.

vbc /out:OdbcRoleProvider.dll /t:library OdbcRoleProvider.vb /r:System.Web.dll /r:System.Configuration.dll
csc /out:OdbcRoleProvider.dll /t:library OdbcRoleProvider.cs /r:System.Web.dll /r:System.Configuration.dll

Utilisation de l'exemple de fournisseur dans une application ASP.NET

L'exemple suivant montre le fichier Web.config pour une application ASP.NET configurée pour utiliser l'exemple de fournisseur. L'exemple utilise un DSN ODBC nommé « RolesDSN » pour obtenir des informations de connexion pour la base de données Access. Pour utiliser l'exemple de fournisseur, vous devez créer le DSN système « RolesDSN » ou fournir une chaîne de connexion ODBC valide à votre base de données.

L'exemple de configuration suppose que votre site Web est configuré pour utiliser l'authentification par formulaire et comprend une page ASP.NET nommée login.aspx qui permet aux utilisateurs de se connecter.

<configuration>
  <connectionStrings>
    <add name="OdbcServices" connectionString="DSN=RolesDSN;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" />
      <forms loginUrl="loginvb.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>

    <authorization>
      <deny users="?" />
    </authorization>

    <roleManager defaultProvider="OdbcRoleProvider" 
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="false"
      cookieSlidingExpiration="true"
      cookieProtection="All" >
      <providers>
        <clear />
        <add
          name="OdbcRoleProvider"
          type="Samples.AspNet.Roles.OdbcRoleProvider"
          connectionStringName="OdbcServices" 
          applicationName="SampleApplication" 
          writeExceptionsToEventLog="false" />
      </providers>
    </roleManager>

  </system.web>
</configuration>

Voir aussi

Concepts

Implémentation d'un fournisseur de rôles

Autres ressources

Gestion de l'autorisation à l'aide de rôles

Sécurisation de sites Web ASP.NET