Visualizzazione dei risultati da 1 a 8 su 8

Discussione: proteggere webservice

  1. #1

    proteggere webservice

    Ho un'applicazione web che espone dei ws che vengono invocati da un'applicazione j2se. I ws sono sia in lettura che in scrittura. Dato che mi interessa proteggere i ws che scrivono (l'applicazione j2se invoca un ws che scrive qualcosa sul db dell'applicazione web), mi chiedevo se è possibile invocarli con l'aggiuna di credenziali (che quindi immagino debbano essere anche criptate in qualche modo nell'applicazione j2se).

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Da quel che ne so io, un modo è quello di mettere le "credenziali" in sessione. Al momento del login metti in sessione le credenziali associate all'utente (pescate solitamente dal db).
    Agni web service può verificare le credenziali in sessione prima di svolgere le operazioni critiche, mandando eventualmente un messaggio di errore, qualora sia tentato un accesso non autorizzato. Puoi associare ad ogni web service un chiave autorizzativa diversa oppure usare la stessa per tutti. Rimanendo il dato in sessione (la key), resta al sicuro.

    Ciao!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Può essere un'idea. Hai qualche esempio pratico?

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Qualche esempio... in verità il concetto è abbastanza semplice...

    Tutto quello che ti serve è qui: HttpSession by sun

    Forse ti servirà anche un tutorial per capire come accedere alla sessione da una servlet, la qual cosa dipende, o può dipendere, almeno in parte dal framework che usi. Ma data l'importanza di questa cosa sono sicuro che qualche esempio a riguardo lo trovi..

    L'oggetto session si ricava dalla request e permette di salvare degli oggetti come attributi della sessione. Si tratta di una HashMap.

    Non so, al login metti in sessione la stringa "select_categoria_1" con valore true (beh.. in questo modo il valore non serve a nulla, è sufficente che quello che metti come valore sia un oggetto e non "null".. se la stringa è nella HashMap la proprietà necessaria per vedere gli articoli della categoria 1 c'è, se la stringa non c'è, manca la proprietà e l'utente non può fare la ricerca).
    Poi l'utente richiede di accedere a una pagina da cui fare la selezione degli articoli. La pagina jsp cerca nella sessione l'attributo necessario, e se questo è null mostra solo un messaggio di errore.
    Più furbamente puoi nascondere il link di accesso..

    Oppure può essere la servlet che fa il controllo e che restituisce l'errore se la proprietà non c'è.

    Alla fine quindi, si tratta solo di accedere alle session partendo dalla request e poi di chiamare i metodi setAttribute e getAttribute per settare una proprietà e verificare se c'è.

    Per una questione di pulizia, se intendi usare più proprietà, potrebbe essere preferibile inserire in sessione non ogni singola proprietà (quindi qualche decina di stringhe) ma una nuova hashmap che conterrà tutte e sole le proprietà.

    Spero che questo ti possa bastare.. ciao!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Mmm non capisco come posso usare questi oggetti. Ti spiego meglio com'è strutturata la mia applicazione.

    Ho un'applicazione web che non contiene servlet o jsp ma soltanto un webservice Pippo con un metodo int getIndex().

    Questo webservice è usato da un'altra applicazione j2se.

    Quindi questa applicazione fa qualcosa del genere

    Pippo p = new Pippo();

    p.getIndex();

    Non si parla nè di servlet, ne di httpsession e request...

  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da redcloud
    Pippo p = new Pippo();

    p.getIndex();

    Non si parla nè di servlet, ne di httpsession e request...
    Perfetto, questo è quello che accade a lato cliente, ma a lato server?

    A lato server dovresti ( nella tua interfaccia di ws ) prevedere che venga richiesto il login, oppure che ad ogni operazione ci un utente in sessione, da lì può procedere a richiedere le altre operazione, altrimenti lancia un'eccezione, oppure un messaggio di avviso sotto forma di messaggio soap, oppure qualcos'altro....

    Però mi sa che tu non hai capito come usarli.....fai così, dovresti leggere almeno qualcosa sulla teoria approfondita dei ws, altrimenti diventa dura se iniziamo a parlare di ws context e msg context.
    Ultimo, ma non meno importante, cambiano alcune cose anche nell'utilizzo del tuo webserver ( Tomcat, Bea, ecc... ) perchè anno una gestione diversa di attachment ( allegati ) se ne gestici, oppure leggera differenza di librerie, ma nulla di che, ma è importante saperlo.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  7. #7
    Originariamente inviato da @DI3GO@
    Ultimo, ma non meno importante, cambiano alcune cose anche nell'utilizzo del tuo webserver ( Tomcat, Bea, ecc... ) perchè anno una gestione diversa di attachment


    In realtà ora che ci penso la cosa potrebbe essere molto semplice.

    Quando invoco il ws, come parametri devo passare anche una password. Il problema in questo caso sta nel fatto che devo proteggere questa password da possibile reverse.

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da redcloud
    Castroneria di miopugno
    perchè anno una gestione

    Ero in tema di nuono anno...

    Originariamente inviato da redcloud
    In realtà ora che ci penso la cosa potrebbe essere molto semplice.

    Quando invoco il ws, come parametri devo passare anche una password. Il problema in questo caso sta nel fatto che devo proteggere questa password da possibile reverse.
    Puoi utilizzare classi di criptazione, di canali sicuri....prova a dare un occhio alla bouncycastle.com.
    Mi capita di usarla e non mi trovo male ( specialmente ws di internet banking )
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.