Bonjour la communauté,
Mon projet est de développer un activeX qui va permettre à un utilisateur de
s'authentifier sur un portail web pour ensuite profiter d'applications (sur un SOA).
Pour cela, cet activeX va,dès la connexion, chercher les certificats dans le magasin personnel de certificats d'IE, les afficher à l'utilisateur. L'utilisateur en selectionnera un valide et enverra les informations au portail web en cliquant sur un bouton "Submit".
Pour le moment j'ai fait en C# un main qui va justement chercher les informations utiles dans le magasin du user et les stocke dans un tableau. Ce code est commenté et dispo ci-dessous.
Mes questions sont les suivantes : Je ne sais pas quelles sont les étapes à suivre ensuite.
Mes contraintes sont de faire un JavaScript qui va prendre ces différents éléments pour les insérer dans une page HTML (avec balise Object).
Auriez vous deja traité un cas similaire sur un des forum ?
Comment fais t on justement ce JavaScript ?
Suis-je à coté de la plaque finalement ? :)
Merci par avance,
Johan LB
Mon code est d'ailleurs le suivant :
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using Microsoft.Win32;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates; /* Biblio la plus importante */
namespace ExportCertif
{
public class CertExport // Création de la classe CertExport
{
static void Main()
{
try
{
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
// Appel au magasin utilisateur local
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
// Ouverture du magasin seulement s'il contient des certificats
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
// Déclaration de la collection de certificats
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
// Tri de cette collection par date
string[] TabCNAutoriteCertification; // Déclaration du tableau des CN d'AC
string[] TabNomObjetCertificat; // Déclaration du tableau des CN de certificats
string[] TabDateExpiration; // Déclaration du tableau des dates d'expiration des certificats
string[] TabClePublique;
TabCNAutoriteCertification = new string[collection.Count]; // Taille des Tableaux = nombre d'éléments dans la collection
TabNomObjetCertificat = new string[collection.Count];
TabDateExpiration = new string[collection.Count];
TabClePublique = new string [collection.Count];
foreach (X509Certificate2 x509 in collection) // A appliquer a tous les certificats de la collection, du magasin
{
// ############# Le nom de l'autorité ###########################
TabCNAutoriteCertification[collection.IndexOf(x509)] = x509.Issuer;
// Je prends l'Issuer de chacun et je le mets dans un tableau
Console.WriteLine("Le nom de l'autorité emettrice du certificat est : {0}", TabCNAutoriteCertification[collection.IndexOf(x509)],Environment.NewLine);
// J'affiche mon tableau d'Issuer
// ############## Le nom de l'objet signé #######################
TabNomObjetCertificat[collection.IndexOf(x509)] = x509.Subject;
// Je prends le nom de l'objet signé par le certificat
Console.WriteLine("Le nom de l'objet signé par le certificat : {0}", TabNomObjetCertificat[collection.IndexOf(x509)], Environment.NewLine);
// J'affiche mon tableau d'objets
// ############### Les dates d'expiration #######################
TabDateExpiration[collection.IndexOf(x509)] = x509.GetExpirationDateString();
// Je prends les dates d'expiration de chacun et je les mets ds un tableau
Console.WriteLine("La date d'expiration du certificat est : {0}", TabDateExpiration[collection.IndexOf(x509)],Environment.NewLine);
// J'affiche mon tableau
X500DistinguishedName dname = new X500DistinguishedName(x509.SubjectName);
// Autre methode pour afficher le nom de mon certif
Console.WriteLine("Voici le nom de l'autorité émettrice du certif: {0}{1}", dname.Name, Environment.NewLine);
// Je l'affiche
// x509.Reset();
// ############### Clés publiques #################################
byte[] results = x509.GetPublicKey(); // Clé Publique en tableau d'entiers
int i;
String sChaine="";
for(i=0;i<results.Length-1;i++){ // Boucle For pour en faire un string !!!!
sChaine=sChaine+ results[i] +"F";
}
Console.WriteLine("Ma clé publique est : {0}", sChaine);
}