Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Sistema autorizzazione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    153

    Sistema autorizzazione

    Salve a tutti,
    mi trovo alle prese con l'implementazione di un'applicazione basata su delle API RESTful.

    Come da titolo il mio problema è il sistema di autorizzazione, quindi di permessi.

    Studiando un po questa architettura ho capito che la fase di "Autenticazione" di un utente è diversa dalla fase di "Autorizzazione". Cioè una volta accertata l'identità dell'utente che sta effettuando una chiamata alle API è necessario verificare che quell'utente abbia i permessi per effettuare quanto desiderato su quella determinata risorsa.

    ES.

    GET - http://api.mioserver.it/car/2
    DELETE - http://api.mioserver.it/car/2

    L'operazione di DELETE può essere eseguita solo se l'utente che sta effettuando l'interrogazione è il proprietario della risorsa, cioè del record nella tabella CAR con ID=2, in caso contrario l'operazione deve essere negata.

    Esistono delle best practice che permettano di avere un DB ben ordinato al fine realizzare questi controlli? O magari link o libri che possono aiutarmi?

  2. #2
    cosa intendi con "proprietario della risorsa"? che è l'utente che ha inserito quella riga? in tal caso basta prevedere nella riga una colonna del tipo user_ins dove registrerai (e poi controllerai) la sigla dell'utente (inserita a login)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    153
    provo con un esempio

    ogni automobile (CAR) viene inserita in archivio da un concessionario. Il concessionario è il proprietario di quella risorsa per cui può modificarne le informazioni (UPDATE) o anche cancellarla (DELETE).

    Tutti gli altri concessionari possono eventualmente leggere le sue info (SELECT) ma non possono modificare nulla.

    Ovviamente nella tabella CAR esiste una Forign Key sul campo "concessionario_id" che mette in relazione ogni record con il proprio concessionario.
    Ultima modifica di absolom; 21-08-2015 a 15:13

  4. #4
    ok, è la stessa cosa che ho detto io. sostituisci la parola concessionario alla parola utente
    quindi aggiungi le colonne
    - USER_INS (chi ha inserito la riga)
    - DATE_INS (in che data)
    - USER_MOD (chi l'ha modificata)
    - DATE_MOD (quando)
    i controlli poi possono essere fatti sia lato applicativo (è un controllo che fai prima, se io non sono il concessionario che ha inserito l'auto, non offrirmi neanche la possibilità di cancellarla!) che lato db (se per caso/errore passa un'istruzione non consentita). ti renderai facilmente conto che la sigla dell'utente/concessionario deve viaggiare nelle chiamate

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    153
    ok penso che dal punto di vista delle relazioni dovrei essere sulla strada giusta.

    In realtà essendo un servizio web devo includere tutta la sicurezza qui dentro, diciamo che sull'applicativo ci lavora altra gente ed è meglio se non mi interesso a quanto bene fanno le cose, e qui mi vengono i dubbi...

    Il server è con PHP e MySQL, per effettuare questi controlli sui permessi ad ogni chiamata devo fare delle select apposite per verificare che l'utente chiamante è lo "USER_INS" della risorsa. Le chiamate da sottoporre a controllo sono un bel po, per questo piuttosto che scrivere 200 volte questi controlli più o meno simili mi sono chiesto se ci fosse via DB qualche idea che mi aiutasse.

    Lasciando quindi perdere l'applicativo, tu cosa intenderesti per controlli lato DB?

  6. #6
    ti fermo un attimo: le api le devi comunque modificare, perché tutte le volte dovrai passare il concessionario. lo puoi fare?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    153
    è già fatto così!

    ad ogni chiamata è allegata una chiave che identifica l'utente.

    Che assolve alla fase di autenticazione => ogni chiamata so da quale utente viene fatta
    Ultima modifica di absolom; 21-08-2015 a 15:29

  8. #8
    nella riga hai la chiave che identifica il concessionario titolare?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    153
    Si, nella tabella CAR c'è una foreign key sul campo "concessionario_id"

  10. #10
    quindi - scusa - dove sta il problema? devi solo controllare che siano uguali!

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.