10 messaggi dal 06 febbraio 2008
Salve,
sto scrivendo un activeX che firma digitalmente su documenti in vario formato.
La lettura dei certificati la effettuo dal certificate store di windows. Inizialmente ho scritto una piccola applicazione winform che legge dallo store e tutto funziona bene.
Ho portato la stessa cosa in un progetto activeX e, al tentativo di lettura dallo store viene sollevata un'eccezione che segue:

***********************************************************************
System.Security.SecurityException: Richiesta di autorizzazione di tipo 'System.Security.Permissions.StorePermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' non soddisfatta.
in System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
in System.Security.CodeAccessPermission.Demand()
in System.Security.Cryptography.CAPI.CertOpenStore(IntPtr lpszStoreProvider, UInt32 dwMsgAndCertEncodingType, IntPtr hCryptProv, UInt32 dwFlags, String pvPara)
in System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags)
in DigiSign.myControl.btLeggiCertificati_Click(Object sender, EventArgs e)
in System.Windows.Forms.Control.OnClick(EventArgs e)
in System.Windows.Forms.Button.OnClick(EventArgs e)
in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
in System.Windows.Forms.Control.WndProc(Message& m)
in System.Windows.Forms.ButtonBase.WndProc(Message& m)
in System.Windows.Forms.Button.WndProc(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Azione non riuscita:
Demand
Tipo della prima autorizzazione non riuscita:
System.Security.Permissions.StorePermission
Area dell'assembly con errori:
Intranet

***********************************************************************

Qualcuno sa dirmi come dare all'assembly digisign.dll le giuste autorizzazioni per consentirne l'esecuzione corretta in ambito intranet?

Ho provato a registrare la dll con regsvr32 ed effettivamente l'activex funziona bene, ma questa cosa non mi è possibile farla in quanto il tutto è fruito via intranet da varie locazioni a me non accessibili.

Ho libertà di utilizzo di framework 2.0 e 3.5 e l'activeX è inglobato in una pagina .htm

Grazie,
Claudio Giordano
Modificato da claudiog il 12 gennaio 2009 16.30 -
Modificato da claudiog il 12 gennaio 2009 16.31 -
Eeee, è un tipico problema, motivo per il quale nessuno usa .NET come ActiveX.
Ovviamente non puoi autodarti i permessi ma deve essere l'utente che lo fa. Per questo o fai un setup che di fatto registra come hai fatto, oppure siccome sei una intranet, potresti sfruttare il CAS che ha la possibilità di impostare i livelli di trust per utente, per macchina ma anche per un intera rete.

Guarda qua
http://support.microsoft.com/?scid=kb%3Ben-us%3B815147&x=10&y=15
e qua
http://msdn.microsoft.com/en-us/library/zdc263t0(VS.80).aspx

Ciao

Il mio blog
Homepage
10 messaggi dal 06 febbraio 2008
Ciao,
innanzitutto grazie per la risposta.
Considerando che l'activeX devo inserirlo in un contesto Java (praticamente non sono in ambiente Microsoft) e non vorrei creare un pacchetto d'installazione, come faccio a dare a questo un'affidabilità tale da consentirgli l'accesso alla macchina client su cui viene eseguito?
Ovvero, sarà l'activeX che porterà con se le informazioni relativamente al fatto che è un oggetto sicuro da eseguire sul client oppure c'è qualche contesto di livello più alto che garantisce questa cosa?
Spero di esser stato chiaro.
Ciao
Claudio
Eh no, perché non puoi dire che stesso sei affidabile, senno tutti lo farebbero e avremmo i PC pieni di virus semplicemente navigando
Devono essere le policy del .NET Framework (che ti ho indicato nei link) che dicono se un assembly è sicuro. Questo lo fa l'utente sulla quale l'activex deve girare o l'amministratore di rete per tutta la lan sulla quale l'activex deve girare.

Ciao

Il mio blog
Homepage
10 messaggi dal 06 febbraio 2008
Infatti...è proprio quello che mi sembrava strano

Quello che non mi è chiaro però è:

visto che l'applicazione complessiva non è una .net ma una java, come agisce l'amministratore per rendere attendibile l'activeX sulla intranet?

C'è la possibilità di certificare l'ActiveX mediante utilizzo di un certificato X509 e renderlo attendibile sulla rete? Mi sai dire come?

Grazie ancora,
Claudio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.