none
Deploiement du site sur IIS (problème connexion base SQL) RRS feed

  • Question

  • Bonjour à tous,

     

    J'ai déployé mon site sur IIS, lui même sur Windows Server 2003 R2.

    Que je fixe un peu le décor, la base SQL est situé sur un SQL Server, et évidemment en lançant le site depuis Visual Studio je n'ai aucun problème.

     

    Par contre, quand je lance après déploiement le site via le IIS, j'ai cette erreur qu'apparemment je ne suis pas le seul à avoir :

     

    Autorisation SELECT refusée sur l'objet 'Clients', base de données 'Dpok', schéma 'dbo'

     

    Après avoir consulté pas mal de forums parlant de ce genre d'erreur, il apparait qu'il faut déclarer l'utilisateur ASPNET dans Sql Management Studio. Ce que j'ai fait, au début en cochant juste le "Select" sur la table concernée.

    Cela n'a rien changé. J'ai donc essayé une méthode plus "brutale", c'est-a-dire en cochant des autorisations un peu partout pour ce même utilisateur.

    Sans succès.

     

    J'ai pourtant :

    1) créé une connexion sous: nommachine\Sécurité\Connexions\, nommée NOMMACHINE\ASPNET

    2) créé un utilisateur sous: nommachine\Base de données\NomDeLaBase\Sécurité\Utilisateurs, nommé ASPNET, qui utilise la connexion créée en 1).

    3) j'ai mis les droits d'accès

     

    Et ça ne change rien Sad

     

    J'ai lu aussi sur des forums que sur Windows Server 2003, il fallait plutot autoriser AUTORITE NT\SERVICE RESEAU. Ce que j'ai fait, exactement de la même façon que précédemment, mais ca ne change tjs rien, tjs la même erreur.

     

    Je ne comprends pas d'autant plus que mes controles d'authentification quant à eux marchent très bien !

    J'avais via asp_regsql créé les tables destinées à cela dans la même base. Elles commencent toutes par:

    aspnet_

    Et je peux m'identifier sur une page de login, il reconnait bien mon login et mot de passe.

    Par contre dès que je vais sur une page qui utilise des SqlDataSource, il me met l'erreur.

     

    J'ai le sentiment d'avoir "tout" essayé, si quelqu'un a une idée, ou s'il faut que je donne plus d'infiormations, n'hésitez pas.

    Merci

    vendredi 18 mai 2007 12:35

Toutes les réponses

  • Bonjour,

     

    Si je comprend bien, l'authentification sur votre base de données est basée sur l'authentification Windows et non Sql. Dans ce cas, c'est l'identitié du pool d'application de IIS qui exécute votre site et donc qui essai de se connecter à votre base.

    Le compte ASPNET correspond à l'identitié utilisée par défaut sous Windows 2000 mais ce n'est plus le cas sous Windows 2003. Par défaut, les pools d'application s'exécutent avec le compte NETWORK SERVICE ou (SERVICE RESEAU en français). Il est donc nécessaire d'autoriser le compte du pool d'application sur les objets de votre base de données.

    vendredi 18 mai 2007 16:56
  • Tout d'abord merci d'avoir répondu,

     

    Effectivement ma base de données est basée sur l'authentification Windows.

     

    En ce qui concerne le compte "SERVICE RESEAU", j'ai bien essayé de lui donner des autorisations, mais cela n'a pas l'air de marcher pour autant.

    Je me permets vous détailler ce que j'ai fait dans Microsoft SQL Server Management Studio:

     

    1) Dans le répertoire "Sécurité\Connexions", j'ai créé la connexion "AUTORITE NT\SERVICE RÉSEAU", pour laquelle j'ai mis l'authentification Windows et comme base de données par défaut "Dpok".

    Dans Rôles du serveur je n'ai rien coché.

    Dans Mappage de l'utilisateur j'ai coché le mappage pour la base de données Dpok, pour le u'tilisateur "AUTORITE NT\SERVICE RÉSEAU", avec le schéma par défaut "dbo".

    Voila pour la connexion.

     

    2) Dans le répertoire "Base de données\Dpok\Sécurité\Utilisateurs\" j'ai donc placé l'utilisateur "AUTORITE NT\SERVICE RÉSEAU", qui a comme schéma par défaut "dbo".

    Je suis allé dans l'onglet éléments sécurisables, j'ai cliqué sur Ajouter ==> "tous les objets correspondant aux types ==> je coche Tables et je fais ok.

    A ce stade j'ai donc toutes mes tables qui s'affichent: celles qui commencent par aspnet_ qui ont été crées automatiquement par l'outil Microsoft, et surtout mes tables crées manuellement.

    La je clique par exemple sur la table "Clients" et j'ai alors la liste des autorisations possibles (elles ont toutes "dbo" comme fournisseur d'autorisation).

    J'ai coché octroyer partout, cliqué sur ok, la mise a jour des autorisations se passe bien. Et de même pour mes autres tables.

     

    Mais quand je teste le site, j'ai toujours et encore la même erreur Crying Que faire ??

    Et qu'est-ce qui explique le fait que mes tables générées automatiquement (aspnet_ ) fonctionnement très bien, et pas les autres ?

     

    Autre point que je peux donner c'est ma configuration IIS. Mon site est dans le répertoire "Sites Web\Site Web par défaut\NomdeLappli".

    Pour ce qui est des propriétés du répertoire: j'ai coché "le contenu de cette ressource doit provenir de : le répertoire désigné"; "Lecture, Ecriture, accès au journal, indexer cette ressource".

    Le site est bien déclaré comme une application avec autorisations pour "scripts et executables", et comme Pool d'applications "DefaultAppPool".

     

    Pour ce qui est de la sécurité de répertoire, dans authentificaion et controle d'accès j'ai :

    "Activer la connexion anonyme" ou j'ai un nom d'utilisateur et un mot de passe

    "authentification de base" (sachant que les autres options possibles sont Authentification Windows intégrée, Authentification Digest pour les serveurs de domaine Windows, Authentification .NET Passport).

     

    Quels sont les bons choix a faire pour configurer le IIS ? Dans mon site, je veux que les utilisateurs s'identifient via un controle asp.net d'authentification, et pas via un controle windows.

     

    Voila je crois que j'ai tout dit !

     

    lundi 21 mai 2007 08:22
  • A l'aide Monsieur Arno ! lol

    Ou n'importe qui, je sèche complètement sur cette erreur.

     

    J'ai le détail de l'erreur que j'ai été rechercher dans le journal du serveur.

    Si jamais ca peut aider :/

    lundi 21 mai 2007 14:33
  • Bonjour,

    Avez-vous finalement trouvé la solution à votre problème, car j'ai le même...
    D'avance, merci
    mardi 23 juin 2009 20:23
  • Bonjour,

    Pouvez-vous nous montrer les erreurs dans le journal du serveur ?
    Pouvez-vous nous indiquer les chaines de connexion que vous utilisez ?

    Pour information :
    De manière générale, sur un serveur web accessible en public il est déconseillé de faire tourner son site sous un pool tournant avec le compte "AUTORITE NT\SERVICE RÉSEAU" mais plustôt un compte dédié utilisateur dédié à l'application.
    Gilles TOURREAU - MVP C#
    jeudi 2 juillet 2009 19:53
    Modérateur
  • Bonjour,

    En faisant un clic droit ==> "propriétés" sur votre base de données, dans l'onglet "Autorisations", vérifiez que vous avez bien vos comptes "SERVICE RESEAU" et "ASPNET" et vérifiez aussi les droits qu'ils possèdent. ("connecter", "executer", "modifier", "selectionner", ...) 
    vendredi 3 juillet 2009 07:24