IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

Problème de sécurité


Sujet :

Framework .NET

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut Problème de sécurité
    Bonjour,

    Mon problème est assez complexe, aussi j'aurais besoin de votre aide pour comprendre l'origine et surtout comment contrer ce souci.

    Je dispose d'une application composée d'un executable qui charge une assembly dans lequel tous mes traitements à la base de données MSSQL sont effectués.

    Lorsque j'exécute l'application sur la machine où elle est installée, pas de problème, tout fonctionne pour le mieux.

    Cependant pour des raisons technique je partage dans le réseau intranet le répertoire avec l'application. Cette application devant pouvoir etre exécuté à distance par les personne qui ont accès à ce repertoire sans pour autant devoir l'installer chez eux.
    Le problème arrive si j'exécute l'application par le réseau, depuis un poste client autorisé. J'ai une levée d'exception de sécurité lorsque je lance une requête (DataAdapter.Fill(DataSet)) au niveau de la base de données.
    Ce qui est étrange, c'est que la base n'applique pas de règle de sécurité particulière, et que je désactive la connexion sécurisée et utilise une authentification SQL qui d'ailleurs est correcte.

    Donc voila si quelqu'un à une idée et surtout peut me dire comment règler ces sécurités, ca m'aiderais pas mal

    Merci par avance.

    Cordialement.

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Bonjour,

    Quels sont le type et le message de l'exception?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    Je pense que le mieux c'est encore de te donner le traçage complet de l'erreur tel que renvoyé par le CLR.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    Exception non gérée*: System.Security.SecurityException: Échec de la demande d'a
    utorisation de type 'System.Data.SqlClient.SqlClientPermission, System.Data, Ver
    sion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
       à System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMar
    k& stackMark, Boolean isPermSet)
       à System.Security.PermissionSet.Demand()
       à System.Data.Common.DbConnectionOptions.DemandPermission()
       à System.Data.SqlClient.SqlConnection.PermissionDemand()
       à System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection ou
    terConnection)
       à System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection out
    erConnection, DbConnectionFactory connectionFactory)
       à System.Data.SqlClient.SqlConnection.Open()
       à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[]
    datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand com
    mand, CommandBehavior behavior)
       à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, I
    nt32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
       à RTWSEngine.Databases.Database.fetchResult(DbCommand query)
       à RTWSEngine.Security.PrepareLicences()
       à RTWSEngine.EntryPoint.StartRTWS(WebDescriptor wdRTWS, Boolean web, String[]
     args)
       à Rtws_CGI.Program.Main(String[] args)
    L'action qui a échoué était*:
    Demand
    Le type de la première autorisation qui a échoué était*:
    System.Data.SqlClient.SqlClientPermission
    La première autorisation qui a échoué était*:
    <IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Vers
    ion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    AllowBlankPassword="False">
    <add ConnectionString="Data Source=tcp:SRV-DEVFMS;integrated Security=False;Init
    ial Catalog=rtws_report;User ID=rtws_report;password=*;"
    KeyRestrictions=""
    KeyRestrictionBehavior="AllowOnly"/>
    </IPermission>
     
    La demande était pour*:
    <PermissionSet class="System.Security.PermissionSet"
    version="1">
    <IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Vers
    ion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    AllowBlankPassword="False">
    <add ConnectionString="Data Source=tcp:SRV-DEVFMS;integrated Security=False;Init
    ial Catalog=rtws_report;User ID=rtws_report;password=*;"
    KeyRestrictions=""
    KeyRestrictionBehavior="AllowOnly"/>
    </IPermission>
    </PermissionSet>
     
    Le jeu autorisé de l'assembly défaillant était*:
    <PermissionSet class="System.Security.PermissionSet"
    version="1">
    <IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Read="USERNAME"/>
    <IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Unrestricted="true"/>
    <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Vers
    ion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Read="\\SRV-DEVFMS\RTWS-CORE\"
    PathDiscovery="\\SRV-DEVFMS\RTWS-CORE\"/>
    <IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, m
    scorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Allowed="AssemblyIsolationByUser"
    UserQuota="9223372036854775807"
    Expiry="9223372036854775807"
    Permanent="True"/>
    <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Flags="ReflectionEmit"/>
    <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Ve
    rsion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Flags="Assertion, Execution, BindingRedirects"/>
    <IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=
    2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Unrestricted="true"/>
    <IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Url="file://srv-devfms/rtws-core/RTWSEngine.DLL"/>
    <IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib
    , Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Zone="Intranet"/>
    <IPermission class="System.Net.DnsPermission, System, Version=2.0.0.0, Culture=n
    eutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Unrestricted="true"/>
    <IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    version="1"
    Level="DefaultPrinting"/>
    </PermissionSet>
     
    L'assembly ou le AppDomain qui a échoué était*:
    RTWSEngine, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null
    La méthode qui a causé l'échec était*:
    RTWSEngine.Databases.ResultSet fetchResult(System.Data.Common.DbCommand)
    La zone de l'assembly qui a échoué était*:
    Intranet
    L'URL de l'assembly qui a échoué était*:
    file://srv-devfms/rtws-core/RTWSEngine.DLL

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    OK.
    Ce code (DataSet.Fill) n'a tout simplement pas le droit de s'éxecuter depuis le réseau.
    Il faut augmenter le 'niveau de confiance' de l'assembly.
    ça se fait dans Outil d'administration, .NET Framework 2.0 configuration

    Il faut aller dans Code Access Policy et Increase Assembly trust (Faire confiance à un Assembly)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par abelman Voir le message
    OK.
    Ce code (DataSet.Fill) n'a tout simplement pas le droit de s'éxecuter depuis le réseau.
    Il faut augmenter le 'niveau de confiance' de l'assembly.
    ça se fait dans Outil d'administration, .NET Framework 2.0 configuration

    Il faut aller dans Code Access Policy et Increase Assembly trust (Faire confiance à un Assembly)
    Je vois pas Outil d'administration dans Visual Studio, c'est bien par ça qu'il faut passer?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Bonjour, j'ai exactement le même problème et j'aimerais savoir si la manipulation est à faire sur le poste ou l'application est installée ou sur le serveur ou se trouve la DLL.

    Car sur mon serveur il n'y a pas .NET Framework 2.0 configuration dans outils d'administration, et que sur le poste en local on me refuse l'accès pour cette dll -_-

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je fait une réponse à cet ancien post car je viens de résoudre le problème à l'instant. Autant que cela soit utile pour d'autres.

    Donc la configuration ce fait sur le poste (panneau de configuration > outil d'administration> configuration framework 2.0) ou est installé Visual studio. Il faut avoir installé le SDK du framework pour visualiser l’accès dans le panneau de configuration.

    Puis après comme dit "cyrano_de_bergerac", Il faut aller dans Code Access Policy et Increase Assembly trust (Faire confiance à un Assembly). Ou plus simplement, aller dans la stratégie de sécurité > ordinateur > Groupes de codes > ALL_code , et mettre le jeu d'autorisation à "full trust".

    J'espère que cela vous a aidé un peu. En cherchant sur le net correctement vous trouverais un tuto plus détaillé surement.

    Cordialement.

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut

    Et en ligne de commande ça donne :
    Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    caspol -q -m -ag 1.2 -zone Intranet FullTrust -n My_Zone
    A faire en administrateur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de sécurité avec MS Access
    Par jpduches dans le forum Sécurité
    Réponses: 2
    Dernier message: 13/12/2010, 15h44
  2. [MS SQL Server 2000] problèmes de sécurité et sauvegarde
    Par Abydos Business Group dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2006, 19h36
  3. [Sécurité] Problème de sécurité
    Par donid dans le forum Langage
    Réponses: 4
    Dernier message: 02/03/2006, 10h07
  4. Problèmes de sécurité Acces-ADO
    Par digital prophecy dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/03/2005, 21h08
  5. [Debutant] Problème de sécurité dans un applet
    Par peaceinpal dans le forum Applets
    Réponses: 3
    Dernier message: 09/09/2004, 20h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo