Exemple d'extension de sécurité
Mis à jour : 5 décembre 2005
L'exemple d'extension de sécurité CustomSecurity utilise l'authentification par formulaires avec SQL Server pour fournir un modèle de sécurité personnalisée qui fonctionne avec Reporting Services. Cet exemple n'est pas pris en charge sur des systèmes d'exploitation Itanium.
Les exemples SQL Server ne sont pas installés automatiquement lors de l'installation. Pour obtenir des instructions sur l'installation des exemples, consultez Installation des exemples.
Remarque relative à la sécurité : |
---|
L'exemple d'extension de sécurité ne doit pas être déployé et testé dans un environnement de production. En effet, il n'est généralement pas recommandé de revenir à l'authentification Windows après une migration vers une extension de sécurité différente. Si vous le faites, vous risquez de rencontrer des erreurs en tentant d'accéder à des éléments de la base de données du serveur de rapports qui ont des descripteurs de sécurité personnalisée, mais sont dépourvus de descripteurs de sécurité de l'authentification Windows. Pour revenir à l'authentification précédente, vous devez réinstaller Reporting Services et appliquer de nouveau manuellement toute la sécurité basée sur les rôles pour vos utilisateurs Windows. Avant d'utiliser cet exemple, vous devez sauvegarder vos fichiers de configuration. |
Important : |
---|
Les exemples sont fournis uniquement à titre éducatif. Ils ne sont pas destinés à être utilisés dans un environnement de production et n'ont pas été testés à cet usage. Microsoft n'assure pas de support technique pour ces exemples. Les exemples d'applications et les assemblys ne doivent pas être utilisés avec votre base de données SQL Server de production ou votre serveur de rapports, ou y être connectés, sans l'autorisation de l'administrateur système. |
Configuration requise
Vous devez connaître Visual Studio et être familier du langage Visual C# ou Visual Basic. Les applications suivantes doivent également être installées pour utiliser l'exemple CustomSecurity :
- Microsoft Visual Studio 2005 ou un environnement de développement compatible (pour l'affichage des fichiers de projet).
- Microsoft .NET Framework version 2.0.
- Microsoft SQL Server 2005, y compris Reporting Services.
- Les exemples de Reporting Services.
- Un serveur de rapports auquel vous avez l'autorisation d'accéder sur votre réseau, si vous avez l'intention d'utiliser l'exemple d'extension pour ajouter des fonctionnalités de traitement de données supplémentaires à votre serveur.
Emplacement
Cet exemple se trouve par défaut dans le sous-répertoire Extension Samples\FormsAuthentication Sample du répertoire des exemples de Reporting Services :
C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Extension Samples\FormsAuthentication Sample
Génération de l'exemple
Vous devez tout d'abord compiler et installer l'extension. La procédure suppose que vous avez installé Reporting Services à l'emplacement par défaut : C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services. Le reste de cette rubrique utilise <install> pour faire référence à cet emplacement.
Si vous n'avez pas encore créé un fichier de clé de nom fort, utilisez la procédure suivante pour générer ce fichier.
Pour générer un fichier de clé de nom fort
Ouvrez une invite de commandes Microsoft Visual Studio 2005. Cliquez sur Démarrer, pointez sur Tous les programmes et sur Kit de développement Microsoft .NET Framework SDK 2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.
-- Ou --
Ouvrez une invite de commandes Microsoft .NET Framework. Cliquez sur Démarrer, pointez sur Tous les programmes et sur Kit de développement Microsoft .NET Framework SDK 2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.
Utilisez la commande CD (changer de répertoire) pour remplacer le dossier actif dans la fenêtre de l'invite de commandes par le dossier dans lequel les exemples sont installés.
Remarque : Pour déterminer le dossier dans lequel se trouvent les exemples, cliquez sur le bouton Démarrer, pointez successivement sur Tous les programmes, sur Microsoft SQL Server 2005 et sur Documentation et didacticiels, puis cliquez sur le répertoire Samples. Si l'emplacement d'installation par défaut a été utilisé, les exemples se trouvent dans <lecteur_système>:\Program Files\Microsoft SQL Server\100\Samples. À l'invite de commandes, exécutez la commande suivante pour générer le fichier de clé :
sn -k SampleKey.snk
Important : Pour plus d'informations sur la paire de clés de nom fort, consultez l'article de sécurité concernant les noms forts et la sécurité dans .NET Framework, dans le Centre de développement .NET sur MSDN.
Pour compiler l'exemple à l'aide de Visual Studio 2005
Ouvrez CustomSecurity.sln dans Microsoft Visual Studio 2005. Si vous avez installé l'exemple à l'emplacement par défaut, vous pouvez y accéder dans le répertoire C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\Samples\Extensions.
Dans l'Explorateur de solutions, sélectionnez le projet CustomSecurity.
Dans le menu Projet, cliquez sur Ajouter une référence.
La boîte de dialogue Ajouter une référence s'ouvre.
Cliquez sur l'onglet .NET.
Cliquez sur Parcourir pour rechercher Microsoft.ReportingServices.Interfaces sur votre lecteur local. Par défaut, cet assembly se trouve dans le répertoire <install>\ReportServer\bin. Cliquez sur OK.
La référence sélectionnée est ajoutée à votre projet.
Dans le menu Générer, cliquez sur Générer la solution.
Déploiement de l'exemple
Après avoir compilé l'exemple, vous devez copier les bibliothèques DLL et les pages ASPX vers les sous-répertoires appropriés pour votre installation Report Server.
Pour déployer l'exemple
Copiez Microsoft.Samples.ReportingServices.CustomSecurity.dll et Microsoft.Samples.ReportingServices.CustomSecurity.pdb dans le répertoire <install>\ReportServer\bin.
Copiez Microsoft.Samples.ReportingServices.CustomSecurity.dll et Microsoft.Samples.ReportingServices.CustomSecurity.pdb dans le répertoire <install>\ReportManager\bin.
Copiez la page Logon.aspx dans le répertoire <install>\ReportServer et la page UILogon.aspx dans le répertoire <install>\ReportManager\Pages.
Une fois l'assembly et les pages de connexion copiés vers le serveur, vous devez apporter quelques modifications aux fichiers de configuration de Report Server et du Gestionnaire de rapports.
Important : |
---|
Sauvegardez tous vos fichiers de configuration avant de les modifier. |
Pour modifier le fichier RSReportServer.config
Ouvrez le fichier RSReportServer.config avec Visual Studio 2005 ou à l'aide d'un simple éditeur de texte tel que le Bloc-notes. RSReportServer.config se trouve dans le répertoire <install>\ReportServer.
Recherchez les éléments <Security> et <Authentication>, puis modifiez les paramètres de la façon suivante :
<Security> <Extension Name="Forms" Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, Microsoft.Samples.ReportingServices.CustomSecurity" > <Configuration> <AdminConfiguration> <UserName>username</UserName> </AdminConfiguration> </Configuration> </Extension> </Security> <Authentication> <Extension Name="Forms" Type="Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension, Microsoft.Samples.ReportingServices.CustomSecurity" /> </Authentication>
Pour plus d'informations sur la sécurité .NET Framework et Reporting Services, consultez Understanding Code Access Security in Reporting Services.
Pour modifier le fichier RSWebApplication.config
Ouvrez le fichier de configuration du Gestionnaire de rapports, RSWebApplication.config, qui se trouve dans le répertoire <install>\ReportManager.
Recherchez l'élément <UI> et mettez-le à jour de la façon suivante :
<UI> <CustomAuthenticationUI> <loginUrl>/Pages/UILogon.aspx</loginUrl> <UseSSL>True</UseSSL> </CustomAuthenticationUI> <ReportServerUrl>http://<server>/ReportServer</ReportServerUrl> </UI>
Remarque : |
---|
Si vous exécutez l'exemple d'extension de sécurité dans un environnement de développement où aucun certificat SSL (Secure Sockets Layer) n'a été installé, vous devez affecter à l'élément <UseSSL> la valeur False dans l'entrée de configuration précédente. Nous vous recommandons de toujours utiliser SSL lorsque vous employez Reporting Services conjointement avec l'authentification par formulaires. |
Comme votre extension doit bénéficier d'une confiance totale, vous devez ajouter un groupe de codes qui lui accorde l'autorisation FullTrust. Pour ce faire, vous ajoutez le groupe de codes au fichier rssrvpolicy.config.
Pour modifier le fichier RSSrvPolicy.config
Ouvrez le fichier rssrvpolicy.config situé dans le répertoire <install>\ReportServer.
Recherchez dans le fichier de stratégie de sécurité le groupe de codes existant dont la condition d'appartenance « URL » est $CodeGen (voir ci-dessous), puis ajoutez une entrée de la forme suivante au fichier rssrvpolicy.config :
Remarque : Si Analysis Services est installé, vous devez modifier Url="C:\Program Files\Microsoft SQL Server\
MSSQL.2
\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll
enMSSQL.3
.<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"> <IMembershipCondition class="UrlMembershipCondition" version="1" Url="$CodeGen$/*" /> </CodeGroup> <CodeGroup class="UnionCodeGroup" version="1" Name="SecurityExtensionCodeGroup" Description="Code group for the sample security extension" PermissionSetName="FullTrust"> <IMembershipCondition class="UrlMembershipCondition" version="1" Url="C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll" /> </CodeGroup>
Remarque : |
---|
Pour simplifier, l'exemple d'authentification par formulaires a un nom faible et nécessite une simple entrée de condition d'appartenance « URL » dans les fichiers de stratégie de sécurité. Cependant, lors de la mise en œuvre de l'extension de sécurité dans votre environnement de production, vous devez créer des assemblys à nom fort et utiliser la condition d'appartenance « Nom fort » lorsque vous ajoutez des stratégies de sécurité à votre assembly. Pour plus d'informations sur les assemblys à nom fort, consultez la rubrique consacrée à la création et à l'utilisation d'assemblys à nom fort sur MSDN. |
Ensuite, vous devez augmenter les autorisations pour le groupe de codes « My Computer » dans le fichier de stratégie du Gestionnaire de rapports.
Pour modifier le fichier RSMgrPolicy.config
Ouvrez le fichier de stratégie du Gestionnaire de rapports, rsmgrpolicy.config, situé dans le répertoire <install>\ReportManager.
Recherchez le groupe de codes suivant dans rsmgrpolicy.config et modifiez l'attribut PermissionSetName, qui possède la valeur Execution, pour lui affecter la valeur FullTrust de la manière suivante :
<CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="FullTrust" Description="This code group grants MyComputer code Execution permission. "> <IMembershipCondition class="ZoneMembershipCondition" version="1" Zone="MyComputer" />
Pour utiliser l'authentification par formulaires, vous devez modifier les fichiers Web.config pour le Gestionnaire de rapports et pour Report Server afin de changer le mode d'authentification et de désactiver l'emprunt d'identité.
Pour modifier le fichier Web.config de Report Server
Ouvrez le fichier Web.config file dans un éditeur de texte. Par défaut, ce fichier se trouve dans le répertoire <install>\ReportServer.
Recherchez l'élément <identity> et affectez à l'attribut Impersonate la valeur false.
<identity impersonate="false" />
Recherchez l'élément <authentication> et modifiez l'attribut Mode en Forms.
Ajoutez l'élément <forms> suivant en tant qu'enfant de l'élément <authentication> et définissez les attributs loginUrl, name, timeout et path de la manière suivante :
<authentication mode="Forms"> <forms loginUrl="logon.aspx" name="sqlAuthCookie" timeout="60" path="/"></forms> </authentication>
Ajoutez l'élément <authorization> suivant immédiatement après l'élément <authentication>.
<authorization> <deny users="?" /> </authorization>
Ceci permet de refuser aux utilisateurs non authentifiés le droit d'accéder au serveur de rapports. L'attribut loginUrl défini plus haut pour l'élément <authentication> redirigera les demandes non authentifiées vers la page Logon.aspx.
Pour modifier le fichier Web.config du Gestionnaire de rapports
Ouvrez le fichier Web.config du Gestionnaire de rapports. Ce fichier se trouve dans le répertoire <install>\ReportManager.
Désactivez l'emprunt d'identité en recherchant la section <identity impersonate= "true" /> et en changeant sa valeur de la façon suivante : <identity impersonate="false" />.
Configuration de l'authentification anonyme
Par défaut, le groupe d'utilisateurs Windows Invités contient le compte IUSR_computername. Ce compte est utilisé pour ouvrir une session initiale localement et afficher la page Logon.aspx. Pour prendre en charge l'authentification par formulaires, vous devez activer l'accès anonyme au répertoire virtuel ReportServer. Par défaut, l'accès anonyme est désactivé.
Pour activer l'authentification anonyme
Dans Service Internet (IIS), sélectionnez le répertoire virtuel ReportServer, qui fait généralement partie du site Web par défaut, et affichez ses Propriétés.
Cliquez sur l'onglet Sécurité de répertoire.
Dans la section Connexions anonymes et contrôle d'authentification, cliquez sur Modifier.
La boîte de dialogue Méthodes d'authentification s'affiche.
Activez la case à cocher Accès anonyme.
Cliquez sur OK.
Recommencez les étapes ci-dessus pour le répertoire virtuel Reports.
Création de la base de données UserAccounts
L'exemple contient un script de base de données, createuserstore.sql, qui vous permet de créer un magasin d'utilisateurs pour l'exemple Authentification par formulaires dans une base de données SQL Server.
Pour créer la base de données UserAccounts
Ouvrez SQL Server Management Studio et connectez-vous à votre instance locale de SQL Server.
Recherchez le fichier de script SQL createuserstore.sql. Ce fichier de script se trouve parmi les fichiers de l'exemple de projet.
Repérez « LocalMachine » vers la fin du script et remplacez ce nom par celui de votre ordinateur. Si vous utilisez Windows 2003, remplacez
LocalMachine\ASPNET
parNT AUTHORITY\NETWORK SERVICE
(sauf si le système fonctionne en mode de compatibilité IIS 5).Exécutez la requête qui crée la base de données UserAccounts.
Quittez SQL Server Management Studio.
Test de l'exemple
La procédure suivante permet de tester l'exemple d'extension de sécurité. Vous allez inscrire un utilisateur administrateur, qui ajoute le nom d'utilisateur, le hachage du mot de passe et la valeur du salt à la table users dans la base de données UserAccounts. Vous devrez également entrer ce nom d'utilisateur dans le fichier de configuration de Report Server. Ensuite, vous ouvrirez une session avec le même compte d'utilisateur pour vérifier le bon fonctionnement des routines de vérification des mots de passe et le chargement correct de l'assembly de l'extension par le serveur de rapports.
Pour créer le projet de rapport
Redémarrez les services IIS en exécutant Iisreset.exe à l'invite de commandes.
Ouvrez le Gestionnaire de rapports. Vous pouvez le faire à partir de Reporting Services ou en accédant au répertoire virtuel Reports à partir de votre navigateur.
Entrez un nom d'utilisateur et un mot de passe, puis cliquez sur Inscrire un utilisateur pour ajouter l'utilisateur à la base de données accounts.
Ouvrez le fichier RSReportServer.config. Recherchez l'élément <Security> et ajoutez le nom d'utilisateur que vous venez d'inscrire de la façon suivante :
<Security> <Extension Name="Forms" Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, Microsoft.Samples.ReportingServices.CustomSecurity" > <Configuration> <AdminConfiguration> <UserName>username</UserName> </AdminConfiguration> </Configuration> </Extension> </Security>
Retournez à la page UILogon.aspx, entrez à nouveau le nom d'utilisateur et le mot de passe, puis cliquez sur Connexion.
Vous devez pouvoir accéder sans restriction au Gestionnaire de rapports et au serveur de rapports. L'utilisateur administrateur que vous créez possède sur le serveur de rapports des autorisations équivalentes à celles d'un compte d'administrateur prédéfini sur l'ordinateur local. Pour les besoins de cet exemple, un seul utilisateur peut être désigné comme administrateur. Avec ce compte d'administrateur, vous pouvez inscrire d'autres utilisateurs et leur attribuer des rôles sur le serveur de rapports.
Remarque : |
---|
Il est recommandé d'ajouter votre utilisateur administrateur aux rôles officiels Administrateur système et Gestionnaire de contenu (dossier racine) de votre serveur de rapports. Ceci exclut l'existence de descripteurs de sécurité vides dans la base de données du serveur de rapports. Pour plus d'informations sur les rôles Administrateur système et Gestionnaire de contenu, consultez la rubrique Vue d'ensemble des rôles prédéfinis. |
Utilisation du service Web avec la sécurité personnalisée
Vous pouvez utiliser l'API de service Web avec l'authentification par formulaires exactement comme l'authentification Windows. Toutefois, vous devez appeler LogonUser dans votre code de service Web et transmettre les informations d'identification de l'utilisateur actuel. De plus, votre client de service Web ne bénéficiera pas de la gestion automatique des cookies assurée par Internet Explorer ou d'autres navigateurs Web. Pour inclure la gestion des cookies, vous devrez étendre la classe proxy Microsoft.ReportingServices. Ceci peut s'effectuer par substitution des méthodes GetWebRequest et GetWebResponse de la classe de service Web.
Débogage de l'exemple d'extension
L'exécution de l'exemple d'extension dans le débogueur est un excellent moyen de résoudre vos difficultés. Elle permet également de parcourir le code en pas à pas et de voir se dérouler le processus d'authentification et d'autorisation du serveur de rapports.
Microsoft .NET Framework fournit plusieurs outils de débogage permettant d'analyser le code de l'exemple. La procédure suivante utilise Visual Studio 2005 pour déboguer l'exemple précédent.
Pour déboguer le code de l'exemple Authentification par formulaires
Démarrez Visual Studio et ouvrez CustomSecurity.sln sur le serveur de rapports utilisé pour ce test.
Ouvrez Internet Explorer et naviguez jusqu'au Gestionnaire de rapports en laissant l'exemple de code ouvert dans Visual Studio.
Basculez vers Visual Studio et définissez quelques points d'arrêt dans le code du projet d'extension de sécurité personnalisée.
Le projet d'extension demeurant dans la fenêtre active, cliquez sur Processus dans le menu Débogage.
La boîte de dialogue Processus s'ouvre.
Dans la liste de processus, sélectionnez Aspnet_wp.exe (ou W3wp.exe, si votre application est déployée sur IIS 6.0) et cliquez sur Attacher.
Dans la boîte de dialogue Attacher au processus, sélectionnez le type de programme Common Language Runtime, puis cliquez sur OK. Pour améliorer les performances du débogage, vérifiez que le type de programme Natif n'est pas sélectionné.
Lorsque l'exemple s'exécute, un formulaire d'ouverture de session apparaît. Tapez les informations d'identification de l'utilisateur dans le formulaire d'ouverture de session et cliquez sur le bouton Connexion.
À chaque point d'arrêt qu'il rencontre, le débogueur doit suspendre l'exécution au niveau de ce point.
Faites défiler votre code à l'aide de la touche F11. Pour plus d'informations sur l'utilisation de Visual Studio pour le débogage, consultez la documentation de Visual Studio 2005.
Remarque : |
---|
Un tel débogage consomme beaucoup de ressources et de temps processeur. En cas de difficulté, fermez Visual Studio, réinitialisez les services IIS et recommencez en attachant la solution CustomSecurity au processus de traitement ASP.NET et en vous connectant au Gestionnaire de rapports. |
Suppression de l'exemple d'extension
Bien que l'opération ne soit pas recommandée en général, il est possible de revenir à l'authentification Windows après avoir essayé l'exemple.
Pour revenir à la sécurité Windows
Restaurez les fichiers suivants à partir de vos copies de sauvegarde : Web.config, RSReportServer.config et RSWebApplication.config. Cette opération permet de redéfinir les méthodes d'authentification et d'autorisation du serveur de rapports en rétablissant la sécurité Windows par défaut. Elle supprime également les entrées que vous avez ajoutées aux fichiers de configuration de Report Server ou du Gestionnaire de rapports pour votre extension.
Désactivez l'accès anonyme au répertoire virtuel du serveur de rapports dans Internet Information Services (IIS).
Une fois les informations de configuration supprimées, votre extension de sécurité n'est plus disponible pour le serveur de rapports. Normalement, il n'est pas nécessaire de supprimer les descripteurs de sécurité créés lors de l'exécution du serveur de rapports dans le cadre de l'exemple d'extension de sécurité. Lorsque l'authentification Windows est activée, le serveur de rapports attribue automatiquement le rôle Administrateur système au groupe BUILTIN\Administrators sur l'ordinateur qui héberge le serveur de rapports. Il faudra toutefois appliquer à nouveau, manuellement, toute la sécurité basée sur les rôles pour vos utilisateurs Windows.
Notez qu'il n'est généralement pas recommandé de revenir à l'authentification Windows après une migration vers une extension de sécurité différente. Si vous le faites, vous risquez de rencontrer des erreurs en tentant d'accéder à des éléments de la base de données du serveur de rapports qui ont des descripteurs de sécurité personnalisée, mais sont dépourvus de descripteurs de sécurité de l'authentification Windows.
Voir aussi
Tâches
Exemples SQL Server Reporting Services
Autres ressources
Exemples d'extensions (Reporting Services)
Implementing a Security Extension
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
5 décembre 2005 |
|