Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Membre Expert
    Profil pro Sylvain Benoit
    Inscrit en
    juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Nom : Sylvain Benoit
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 103
    Points : 1 485
    Points
    1 485

    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 556
    Points
    2 556

    Par défaut

    Bonjour,

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

  3. #3
    Membre Expert
    Profil pro Sylvain Benoit
    Inscrit en
    juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Nom : Sylvain Benoit
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 103
    Points : 1 485
    Points
    1 485

    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 :
    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 556
    Points
    2 556

    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 régulier
    Inscrit en
    mars 2007
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 344
    Points : 99
    Points
    99

    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 éprouvé
    Homme Profil pro Ludovic FRANTZ
    Développeur informatique
    Inscrit en
    septembre 2008
    Messages
    336
    Détails du profil
    Informations personnelles :
    Nom : Homme Ludovic FRANTZ
    Âge : 28
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : septembre 2008
    Messages : 336
    Points : 423
    Points
    423

    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
    Invité régulier
    Inscrit en
    janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 5
    Points : 6
    Points
    6

    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 Gaëtan Wauthy
    Développeur .NET
    Inscrit en
    novembre 2006
    Messages
    1 632
    Détails du profil
    Informations personnelles :
    Nom : Homme Gaëtan Wauthy
    Âge : 32
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 1 632
    Points : 3 596
    Points
    3 596

    Par défaut


    Et en ligne de commande ça donne :
    Code cmd :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •