Quali oggetti .NET dovrei usare per creare una sessione basata su cookie in MVC?

4

Sto scrivendo un'applicazione personalizzata per la reimpostazione della password che utilizza una tecnica di convalida che non si adatta in modo pulito alle domande di richiesta del provider di appartenenze di ASP.NET.

Ovviamente ho bisogno di richiamare un flusso di lavoro e raccogliere informazioni dall'utente finale (numero di telefono di backup, indirizzo email) dopo che l'utente ha effettuato l'accesso utilizzando un modulo personalizzato.

L'unico modo che conosco per creare una sessione basata sui cookie (senza troppa "innovazione" da parte mia) è usare WIF.

  • Quali altri oggetti standard posso utilizzare con ASP.NET MVC per creare una sessione autenticata che funzioni con gli archivi utente non Windows?

Idealmente posso memorizzare "ruolo" o rivendicare informazioni nell'oggetto di sessione come "admin", "departmentXadmin", "normalUser" o "restrictedUser"

Il flusso di lavoro sarà simile a questo:

  1. L'utente accede con nome utente e password
  2. Se username e pw sono corretti, viene creata una sessione basata su cookie (stateless)
  3. L'utente viene reindirizzato a un modulo HTML che consente loro di inserire il proprio numero di telefono di backup (per doppio fattore SMS) o di convalidarlo se già impostato.
  4. L'utente può quindi modificare la propria password utilizzando il modulo fornito

La "password dimenticata" sarebbe simile a questa

  1. L'utente richiede il codice OTP da inviare al telefono
  2. L'utente accede utilizzando il nome utente e l'OTP
  3. Se l'OTP è valido e non è scaduto, crea una sessione basata su cookie e reindirizza a un modulo che consente il ripristino della password
  4. Mostra il modulo per la reimpostazione della password ed elabora i risultati.
posta random65537 29.01.2013 - 16:29
fonte

2 risposte

1

Innanzitutto, controlla i bit di appartenenza migliorati rilasciati con 4.5: dovrebbe essere più semplice implementare opzioni personalizzate in aggiunta alla vecchia struttura scricchiolante.

In entrambi i casi, si può fare un po 'di efficacia "lasciare che i provider di appartenenza gestiscano l'autenticazione principale e utilizzare il proprio database per gestire le estensioni." Anche i vecchi hanno un concetto di approvazione dell'account che puoi gestire a livello di programmazione.

Un'altra opzione sarebbe quella di utilizzare i bit di autenticazione di ASP.NET ma di eseguire il rollback del proprio backing. Puoi iniziare con questo articolo per ottenere alcune delle nozioni di base e aggiungere parti da lì.

    
risposta data 29.01.2013 - 19:41
fonte
0

Ho lavorato per scrivere il mio semplice sistema di autenticazione denominato FSCAuth. È stato fuori per un po ', ma non è affatto sicuro "garantito". Ad ogni modo, se stai pensando di far girare la tua autenticazione in ogni caso (che è sempre rischiosa), potresti considerare di usare il mio framework di autenticazione come punto di partenza. È progettato per essere banale da estendere, ma implementa solo ciò a cui le persone effettivamente interessano.

Uno dei suoi obiettivi è gestire i cookie per te e non lasciarti mai confondere con i valori hash (dove puoi fare qualcosa di insicuro in modo molto subdolo). Tuttavia, il tuo caso d'uso fa sembrare che alcune modifiche sarebbero in ordine.

Ho alcuni "rami" di FSCAuth:

  1. Licenza BSD con opzione di supporto a pagamento Binpress
  2. La stessa copia di ciò che è su Binpress ma facilmente sfogliabile all'indirizzo bitbucket
  3. Integrato nel mio framework MVC personalizzato (BSD). Non abbastanza compatibile con la vecchia versione, ma questa versione è in sviluppo attivo (e attualmente sperimentale), dove gli altri sono probabilmente morti (a causa della mancanza di interesse) a bitbucket
risposta data 29.01.2013 - 20:33
fonte

Leggi altre domande sui tag