Come funziona l'autenticazione con ASP.NET (utilizzando Live ID e \ o Autenticazione Windows)

4

Sono principalmente programmatore di app per desktop .NET. Entrare nel mondo del web è stato difficile. Sto provando a convertire una delle mie app Silverlight in HTML. Ma sto facendo fatica a capire il sistema di autenticazione. Sto provando a leggere sull'autenticazione Live ID e sull'autenticazione di Windows, ma sto facendo fatica a mettere tutto insieme nella mia testa. Forse puoi aiutare?

My App Framework

La mia applicazione client è una pagina HTML (o pagine) TypeScript (javascript). E il server è un'API REST di servizi dati WCF ospitata in ASP.NET. Il servizio funziona con un database SQL.

I problemi (basato sulle attestazioni)

Quando guardo qualcosa come l'autenticazione Live ID, è nota come autenticazione basata sulle attestazioni, giusto? Quindi, se avessi implementato correttamente, qualcuno verrà sul sito web, ho bisogno di verificare che siano loggati. Come faccio a farlo da una pagina HTML lato client? Ho un timer ricorrente che convalida il login ogni 30 secondi o qualcosa del genere? O è fatto sul lato server per ogni chiamata al servizio?

So che se non hanno effettuato l'accesso, devo inviarli alla pagina di accesso in tempo reale, una volta che effettuano l'accesso, la pagina live li reindirizzerà al mio server con il token di autorizzazione nella stringa di query (o qualcosa del genere come questo). A questo punto, però, cosa faccio 5 minuti dopo aver fatto una chiamata al servizio web per i dati? È quel token inviato su ogni chiamata al server un po 'come? Come convalidare che quando chiamano il servizio, in realtà sono loro? Devo racchiudere tutte le chiamate di servizio in un metodo ValidateUser () o qualcosa del genere? Ho un ID utente nel database che dovrei abbinare al loro token utente in qualche modo.

I problemi (autenticazione di Windows)

Il problema precedente esiste ancora qui. Come faccio a sapere che ogni chiamata dal client è ancora loro? Inoltre, ho bisogno di capire cosa devo fare dal lato HTML al lato server per autenticarli e quindi continuare l'autenticazione.

Conclusione

Non riesco davvero a trovare alcun tipo di spiegazione che spieghi concettualmente tutte queste informazioni e mi dia il quadro completo di come tutto funziona. Spero davvero che qualcuno qui possa colmare queste lacune e darmi un'idea migliore su come implementare l'autenticazione client e server.

Grazie!

Aggiornamento

Ho trovato un grande libro che spiega davvero molto di questo. È intitolato "Guida all'identità e al controllo dell'accesso basata sulle attestazioni". Fa parte dei modelli & pratica serie.

Grazie a tutti per le vostre risposte e mettetemi sulla giusta strada.

    
posta Thraka 22.01.2013 - 18:51
fonte

2 risposte

4

Vorrei utilizzare sessioni . Puoi memorizzare le informazioni che ti servono dopo aver effettuato l'accesso, che si tratti di un token dato dal servizio di accesso o anche solo di un valore booleano isLoggedIn .

Quindi, puoi controllare le pagine che ne hanno bisogno (Ereditare da una classe di pagina base è grandioso per questo) che le informazioni ci sono. Altrimenti, riprendili.

Quindi, nel tuo codice che elabora la risposta dell'autorizzazione basata sulle attestazioni (lavoro molto con CAS e Shibboleth, due sistemi basati sulle attestazioni in uso pesante in ambito accademico), faresti qualcosa del tipo:

if(isSuccessfulLogin)
{
    Session.Add("isLoggedIn",true);
    Session.Add("userId", userIDfromService);
}

Quindi, nel tuo metodo Page_Load , dovresti fare qualcosa del tipo:

if(Session["isLoggedIn"])
{
    // do whatever
}
else
{
    // redirect somewhere
}

Sono molto semplificati e tralasciano i dettagli.

    
risposta data 23.01.2013 - 21:52
fonte
2

Dai un'occhiata al link . Sembra che sia orientato verso un nuovo pubblico. (Sì, si tratta di moduli Web, ma le informazioni sono applicabili a un ambito più ampio).

Asp.net ha già delle librerie integrate per le basi. Dovresti esaminare RoleProvider e MembershipProvider .

Fondamentalmente, è necessario autenticare ogni richiesta HTTP. Come si esegue l'autenticazione e come si persiste dipende da voi. È possibile memorizzare un cookie sul client, utilizzare una sessione, ecc ...

La guida definitiva all'autenticazione del sito Web basata su moduli è un bel elenco multipiattaforma di cose da fare e da non fare. Un sacco di informazioni lì, e una volta che sei attivo e funzionante, questo avrà un sacco di trucchi che potresti aver perso.

    
risposta data 23.01.2013 - 22:22
fonte

Leggi altre domande sui tag