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

C# Discussion :

Authoriser l'intégration d'une DLL .net par assembly name


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut Authoriser l'intégration d'une DLL .net par assembly name
    Bonjour,

    Une équipe de développement voudrait pouvoir authoriser l'usage de leur DLL par assembly name. Leur design initial fait que la DLL va chercher le nom de l'assembly qui l'intègre et appelle une base de données derrière un firewall afin de valider l'existence de l'assembly dans une table de permission.

    J'ai contesté la pertinence du besoin puisque la DLL ne sera pas publiée publiquement et uniquement à même la compagnie mais depuis une acquisition en Chine, ils deviennent paranoiaques. Et en plus, que fait-on si la DB ne répond plus parce à cause d'un backup ou autre opération accaparante? Mais bon.

    Disons que c'est justifié. J'ai peine à trouver une façon de faire cela.

    Je sais 1. comment signer une DLL pour assurer que le code source n'a pas été modifié et utiliser un certificat d'un tiers comme Verisign et 2. comment appliquer un controle de licence de développeur (DLK) afin d'authoriser l'intégration par poste de travail.

    Existe-t-il un mécanisme similaire qui permettrait de générer un certificat par assembly name qui serait validé par Visual Studio ou la DLL à la compilation (ou au déploiement)? Et peut-on facilement créer un service de validation de certificat à l'interne plutôt que de faire affaire avec une tiers partie?

    Merci,

    Pat

  2. #2
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonjour.

    Dotnet inclut un mécanisme natif de signature des assemblées basé sur une paire de clés privée/publique. Il est ainsi possible de charger une assemblée via Assembly.Load et compagnie en spécifiant un nom qualifié, c'est à dire une chaîne de caractères contenant le nom, la version et un hash de la clé publique.

    Au chargement le CLR vérifiera que tout correspond, c'est à dire que l'assemblée correspond au hash spécifié et qu'elle a bien été signée par le détenteur de la clé privée correspondant à la clé publique.

    Enfin la signature de l'assemblée ne nécessite pas les sources.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Bonjour.

    Dotnet inclut un mécanisme natif de signature des assemblées basé sur une paire de clés privée/publique. Il est ainsi possible de charger une assemblée via Assembly.Load et compagnie en spécifiant un nom qualifié, c'est à dire une chaîne de caractères contenant le nom, la version et un hash de la clé publique.

    Au chargement le CLR vérifiera que tout correspond, c'est à dire que l'assemblée correspond au hash spécifié et qu'elle a bien été signée par le détenteur de la clé privée correspondant à la clé publique.

    Enfin la signature de l'assemblée ne nécessite pas les sources.
    Aurais-tu un lien vers un tutoriel ou de la documentation? Je n'arrive pas à trouver un mot clé pour trouver des résultats pertinents dans Google. Merci.

  4. #4
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Je t'invite à chercher "assembly signing" et "assembly strong name", éventuellement accompagnés de "dotnet" ou "c#". Tu peux aussi jeter un coup d'oeil à la doc de Assembly.Load et compères sur msdn.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Je t'invite à chercher "assembly signing" et "assembly strong name", éventuellement accompagnés de "dotnet" ou "c#". Tu peux aussi jeter un coup d'oeil à la doc de Assembly.Load et compères sur msdn.
    OK, j'ai déjà trouvé le strong name signing et ça ne répond pas au 'besoin'.

    En signant la DLL, il n'existe qu'une seule clé publique qui pourrait être partagée par multiple intégrateurs. Ce qu'ils veulent, c'est authoriser la DLL pour chaque intégration indépendante.

    Si quelqu'un copie une solution de site web contenant la DLL et renomme simplement l'assembly, l'exécution devrait être bloquée.

    Personnellement, je ne trouve rien qui puisse faire ça.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/08/2013, 13h14
  2. [WD8] Passage de paramètre par valeur à une sub avec une dll .net
    Par didierbi dans le forum WinDev
    Réponses: 3
    Dernier message: 19/06/2009, 17h21
  3. Debug d'une DLL utilisé par un site ASP.Net
    Par vince_lille dans le forum ASP.NET
    Réponses: 8
    Dernier message: 06/03/2008, 14h38
  4. Comment (ou peut on) créer une DLL .NET ?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 02/04/2006, 15h54

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