Autenticazione: dove la mettiamo?

rated by 0 users
This post has 9 Replies | 3 Followers

Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
petrux Posted: 06-10-2011 15.05

Ciao a tutti,

 

la domanda sorge spontanea: l'autenticazione è da considerarsi un servizio di business? 

:-)

 

Ciao e grazie,

Giulio

 

-- 

 

Top 10 Partecipanti
Maschio
Post 243
Punteggio 3.383

Domanda difficile, io lo considero spesso infrastrutturale, però il concetto di utente e della gestione dei permessi è un servizio sicuramente, ma la mera tecnologia utilizzata per l'autenticazione è infrastrutturale IMHO

alk.

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
Post 6
Punteggio 105

Come dice G.M. la risposta non è semplice...per esperienza personale direi che è qualcosa di "ortogonale" ai servizi di business.

Ciao

melkio

Blog: http://blog.codiceplastico.com/melkio
Twitter: http://twitter.com/amelchiori 

  • | Punteggio Post: 5
Top 25 Partecipanti
Maschio
Post 67
Punteggio 1.440

la domanda è: l'autenticazione "partecipa" al business o è "soltanto" una "commodity" che, data una coppia username/password, ti dice "SI" o "NO"?

.A

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907

Ciao Andrea,

 

l'autenticazione ti dice SI/NO e dal profilo dell'utente il servicelayer/applicationlayer decide se una operazine si può fare o no. :-)

 

Ciao,

Giulio

 

-- 

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
Post 67
Punteggio 1.440

e allora direi che ti sei risposto da solo :-)

.A

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907

...e la risposta è? :-)


Scherzi a parte, sarà il caldo, sarà che sono iper-concentrato su altro, ma onestamente la risposta mi sfugge. :-/

 

Ciao e grazie,

Giulio

 

--

 

  • | Punteggio Post: 20
Top 25 Partecipanti
Maschio
Post 6
Punteggio 105

 

Spero di interpretare bene la sinteticità di Andrea: se il processo di autenticazione è solo SI/NO (come, mi sembra di capire, nel tuo caso) può essere considerato ortogonale al servizio stesso e quindi implementato tramite AOP o altro, e quindi un po' nascosto (e non sempre mi piace)

Qualora il concetto del chi-fa-cosa è legato al business, preferirei che fosse più esplicito e concorresse alla definizione del processo/use-case

Fai una cosa: chiedilo al tuo Ubiquitous Language :-)

 

melkio

Blog: http://blog.codiceplastico.com/melkio
Twitter: http://twitter.com/amelchiori 

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 243
Punteggio 3.383

Io solitamente ho due differenti situazione per l'autenticazione e mentalmente separo in due situazione

1) le regole di business sono complesse e per capire se un utente può fare una certa operazione debbo interrogare il dominio o il db se non sono DDD, o in generale fare una logica complessa (Es. l'operazione di DeleteRilevazione un admin la può fare sempre, uno user normale solamente se è l'unico utente associato alla rilevazione.

2) Non ho complesse regole di business, ma per ogni operazione del servizio (chiamata dalla UI) so a compile time che ruolo può chiamarla, uso la security .NET decorando i metodi con i PrincipalPermission e sono a posto.

In entrambi i casi, viene tirata una securityException, che viene recuperata da un intercettore messo in AOP che logga tutto e lato client fa apparire ad esempio una grande MessageBox con su scritto "UNPERMITTED", e se ho più di X unpermitted automaticamente sloggo e faccio mostrare nuovamente la form di login.

alk.

  • | Punteggio Post: 20
Top 25 Partecipanti
Post 17
Punteggio 295

Io ho implementato un framework di security simile a Rhino.Security, quindi di infrastruttura. Poi abbiamo avuto la necessita' di evolvere la logica di business, rendendo partecipe il framework di security e sempre seguendo l' esempio di rhino.security abbiamo esposto delle interfacce sul dominio dal framework di security.

Adesso e' sempre un servizio di infrastruttura ma puo' essere usato anche come integration nella logica di business.

La nostra necessita' era quella di poter fare una cosa del tipo:

var query = repository.GetOrdersQuery() // ritorna una IQueryable<Order>()

var securequery = securityService.SecureQuery(query, "Posso vedere gli ordini?")

E lanciare l' SQL statement dall' O/RM solamente alla fine.

  • | Punteggio Post: 5
Pagina 1 di 1 (10 elementi) | RSS
Powered by Community Server (Commercial Edition), by Telligent Systems