Newsgroup: it.comp.java
Titolo: L' Applet firmata cosa puo fare?

Salve a tutti,
Ho sviluppato un'applicazione basata su servlet + jsp.
Ora, come altri (fonte i gruppi di google), ho la necessita' di produrre 
un report e di stampare in automatico su di una stampante precisa, senza 
  che l'utente la selezioni e, ogni volta, debba confermare l'operazione.
Per poter fare questo ho letto che con un'applet firmata e autorizzata 
e' possibile accedere anche alle risorse del computer locale.
A questo punto, dato che ho gia' una dll che produce pdf e li mette in 
dove dico io sul server, mi chiedo se per caso non sia possibile anche 
mandare un comando direttamente al sistema operativo, di aprire acrobat 
e di stampare il documento.
Gia' eseguo questa operazione nella versione client|server delphi del 
mio programma, saprei gia' quale comando impartirgli. Non so pero' se e 
possibile e, se cosi' fosse, non saprei come lanciare il comando al 
sistema operativo!
Non l'ho ancora detto, ma l'applicazione sara' utilizzata da client che 
sanno cosa la mia applet dovra' fare. Niente di distruttivo quindi.
Le mie domande sono quindi le seguenti:
1. Come posso decidere a quale stampante inviare la stampa?
2. Come posso impartire un comando al sistema operativo?
3. Come posso produrre un set di chiave pubblica|privata per far girare
    questo coso, senza verisign?
Spero che qualcuno abbia un'idea di quello che ho chiesto.
Spero di essermi spiegato bene :s ...
Vi ringrazio molto,
-- 
            Davide Gurgone
      web: 
http://www.gurgone.it/
mail: davidechiocciolinagurgonepuntoit

     questo coso, senza verisign?
La risposta è che PUOI farlo tramite il keytool, che trovi nella directory
bin della tua installazione Java: ti permette di generare una coppia di
chiavi asimmetriche, con tanto di certificato self-signed che verrà salvato
in un "keystore", nient'altro che un raccoglitore di certificati; per
maggiori info su come utilizzare il keytool e manipolare il keystore ti
consiglio di "googlare" un po', ma non è complicato.
Il problema è un altro: che se non firmi la tua applet con un certificato
valido (non vanno bene neanche quelli VeriSign gratuitamente in prova,
figuriamoci quello self-signed) il browser NON ti farà funzionare l'applet:
dovrai distribuire al client il tuo keystore col tuo certificato e
modificargli il file delle policy, oppure, se il browser del client
supporta il Java-Plugin, installare in questi MANUALMENTE il tuo
certificato con la chiave pubblica. Per quanto ne so io, l'installazione
con richiesta all'utente automatica avviene SOLO con certificati validi.
Spero di essere stato di aiuto.
Un saluto e in bocca al lupo!
Sergio B.
-- 
Sergio Bossa
Author and Developer of:
- Montag, Web Services System for XML Database Interaction:
 
http://montag.sourceforge.net
- QuickNote:
 
http://quicknote.sourceforge.net

 con richiesta all'utente automatica avviene SOLO con certificati validi.
A questo punto mi sorge una domanda:
E' certo che da un'applet non si possa stampare, senza autorizzazione?
Se invece fosse possibile scegliere la stampante e stampare, sarebbe 
perfetto... Non esiste, che tu sappia, un'applet demo per la stampa, in 
giro per la rete? Giusto per non perdere troppo tempo sulle prove...
Ciao,


 giro per la rete? Giusto per non perdere troppo tempo sulle prove...
se esistesse mi fionderei in banca a comprare tutte le azioni di aziende di
toner
e risme di carta
  cya Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ciao,
Toglimi una curiosità: l'applicazione che hai sviluppato è riservata all'uso
in una intranet, giusto? voglio dire... non c'è nessuna delle tue pagine
accessibili pubblicamente via web?
Se la risposta è affermativa, proporrei un'altra strada: stampante di rete
(oppure stampante USB collegata ad un printserver) e invio dei documenti da
stampare direttamente dal server.
Questo perchè si suppone che la tua applicazione abbia maggiore libertà di
movimento sul server (che è una macchina con cui tu, in quanto sviluppatore,
interagisci direttamente), e su cui puoi preparare una configurazione *ad
hoc* per tutti i client che vi si connettono.
Ovviamente, il presupposto è avere il tempo sufficiente per effettuare le
modifiche...
-- 
Fermiamo Scientology prima che sia troppo tardi!!!
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx/
(per rispondere personalmente leva IlDitoDalCulo)

 modifiche...
Scusami, ma e' cosi' difficile installare la firma da me prodotta, sui 
client?
Grazie ancora,


 giro per la rete? Giusto per non perdere troppo tempo sulle prove...
Non ne ho idea, mi spiace, e non penso proprio.
In ogni caso, mi sembra di aver capito che tu lavori in un'azienda: non
conosco la tua posizione, ma potresti proporre l'acquisto di un certificato
aziendale. E se per questo ti licenziano, puoi sempre prendertela con
noi ;)
Scherzi a parte, non penso sia un'idea cattivissima l'acquisto di un
certificato, può sempre tornare utile.
E al limite, bocciata la tua proposta e sopravvissuto al rischio
licenziamento, ti armi di pazienza ed installi il tuo certificato
self-signed in tutti i client.
Un saluto,


 
Mi dispiace doverti dare una delusione, ma ancora non so aiutarti in questo
senso :(
Potresti però provare a portare il tutto in Java Web Start. Dal punto di
vista dello sviluppatore puoi gestire le stampe nel modo che preferisci,
avendo la certezza che nel momento in cui chiedi un'istanza di PrintService
(in assenza di firma) se l'utente non preme almeno "SI" la stampa non si
avvia.
Per le altre possibilità, guarda la documentazione:
http://java.sun.com/products/javawebstart/docs/javadoc/index.html
Quando poi avrai la tua coppia certificato/firma, puoi far installare il tuo
certificato avviando Java Web Start Application Manager, e scegliendo:
File -> Preferenze -> Certificati di root -> Importa
e usando la firma corrispondente sulla tua applicazione.
Da quel momento non dovrebbe più dare avvisi di protezione, almeno in teoria
(visto che non l'ho ancora provato)


[CUT]
Eccomi qui... Mi sono armato di sana pazienza ed ho fatto una prova.
1. Ho creato un'applet con un bottone che lancia un comando di stampa.
2. L'ho jarrato (con netbeans, perche' la voglia mi mancava)
3. Ho prodotto le chiavi privata e pubblica (Istruzioni su una riga):
    C:\j2sdk1.4.2_05\bin>
    keytool -genkey -alias signapplet -keystore mystore -keypas
    s kpi135 -dname "cn=cbapplet" -storepass abcd00
4. Ho firmato il jar e il tool mi produce un'altro jar sprint.jar
    C:\j2sdk1.4.2_05\bin>
    jarsigner -keystore mystore -storepass abcd00 -keypass kpi135
    -signedjar sprint.jar print.jar signapplet
5. Esporto il certificato:
    C:\j2sdk1.4.2_05\bin>
    keytool -export -keystore mystore -storepass abcd00 -alias
    signapplet -file signapplet.cer
6. con HTMLConverter converto la pagina che contiene il collegamento
    all'applet:
[CUT...]
<applet code="it.sweetvillage.swcc.applets.JAPrint.class"
   archive="sprint.jar" width="200" height="100">
   <param name="file" value="myfile.msg"> </param>
</applet>
7. lancio la pagina con mozilla firefox e, indovinate un po? mi chiede
    se voglio autorizzare l'applet, solo se conosco la provenienza e la
    ritengo sicura. L'applet parte, ma non mi viene visualizzata
    correttamente. Faccio ancora qualche prova e poi vi dico.
7b. Con IExplorer 6 (sp2 di xp pro) succede qualcosa di differente.
     Il browser mi avverte che qualcosa di potenzialmente pericoloso e'
     stato invocato e me lo blocca, mostrandomi pero' una barra
     "sicurezza".
     Col tasto destro posso autorizzare la mia super-pericolosa applet e
     mi appare la stessa cosa di prima.
Ora verifico se effettivamente riesce a fare qualcosa di piu' che 
mostrare male l'interfaccia e vi faccio sapere.
Ciao,


[CUT]
Rieccomi.
Confermo che la procedura scritta sopra apre un applet certificata e, 
previa autorizzazione dell'utente, l'applet stampa senza chiedere conferma!
Ora mi devo "solo" fare la logica di stampa corretta :)
Ciao a tutti e grazie per l'aiuto...
Ora vado a correre!
