2009-05-09 11 views
6

Attraverso l'acquisizione abbiamo un numero di prodotti che richiedono l'autenticazione e l'autorizzazione. I prodotti includono siti Web e applicazioni lato client, le applicazioni lato client utilizzano alcuni servizi Web. Siamo un negozio .Net ei server eseguiranno Server 2008, i client eseguiranno XP SP ?? e più tardi.L'utilizzo di Kerberos per l'autenticazione di siti Web e servizi Web è una buona idea?

Gli utenti dei prodotti non fanno parte della nostra organizzazione e si allontanano da singoli utenti con un pc autonomo per gli utenti in organizzazioni in esecuzione Active Directory, ecc

Attualmente non c'è negozio di autenticazione o di identità comune e stiamo cercando di rimediare a questo. I nostri obiettivi sono:

  • Un singolo nome utente e password (o certificato) su tutti i prodotti.
  • Idealmente un unico accesso (è facile se stiamo lanciando un sito Web da un'app client, presumibilmente meno se un utente accede a un sito Web prima di lanciare successivamente l'app lato client).
  • Plus il solito; robusto, scalabile ...

Come la maggior parte delle aziende, disponiamo di risorse limitate e di un programma limitato.

Un percorso proposto per l'autenticazione è Kerberos che è probabilmente il percorso ideale per un'applicazione client per l'autenticazione a un servizio Web, ma sono meno felice di usarlo su un sito web in cui l'utente potrebbe inserire un nome utente e una password e la il web server sarebbe responsabile per il ticketing (quindi memorizzare il ticket in un cookie?). Sento che potremmo stare meglio con un singolo negozio di identità e il nostro servizio di autenticazione che accetta nome utente e password, si confronta con un hash ordinato, quindi emette un token di sicurezza personalizzato basato sull'ora. Forse usare SqlMembershipProvider?

Grazie a chiunque abbia letto fino a qui. Kerberos è la soluzione migliore per questo scenario o dovrei cercare altrove? Se non è una buona misura, perché no?

Stiamo anche cercando in AD LDS per l'autorizzazione, ma credo che questo post è lungo già abbastanza ...

risposta

3

Avete considerato OpenID?

+0

Se si vuole andare all'estremo, è possibile implementare SSL a 2 vie e emettere certificati privati ​​per tutti gli utenti. Si potrebbe eliminare la necessità per gli utenti di avere l'autenticazione nome/pwd nel loro insieme (il loro browser semplicemente pubblicherebbe le proprie credenziali al server) e questo è il metodo più sicuro possibile. – Cuga

+0

Mi piacciono sia OpenID che certs ma credo che se andassimo OpenID vorremmo il nostro server OpenID e non penso che abbiamo la risorsa/tempo/budget per farlo. Lo stesso vale per il rilascio dei nostri certificati. C'è un fornitore di certificati nel nostro settore che rilascia certificati senza alcun costo per l'utente e comporta responsabilità per l'autenticazione iniziale ecc. Ma, quando guardammo l'ultima volta, il costo per noi autenticare gli utenti con loro ha rovinato il business case per l'uso loro. –

+1

In entrambi i casi, il problema che ho al momento è che la prima scelta sembra essere Kerberos di cui mi trovo a disagio su un sito web. Tuttavia, non posso effettuare il marshalling di argomenti contro l'utilizzo diverso da quello che non otterremo il completo vantaggio di Kerberos e non "odorerà" correttamente per l'autenticazione del sito web. Nessuno dei quali sembra un buon argomento. Può darsi che Kerberos sia la soluzione giusta e mi sento semplicemente a disagio a causa della mia mancanza di conoscenza. –

1

OpenID per i vostri account utente singolo e OAuth per autorizzare le app ad accedere ai dati in un altro sito Web costituiscono una buona soluzione distribuita. Sì, Active Directory o un'altra soluzione di single sign-on pura funziona alla grande in un ambiente omogeneo, ma sembra piuttosto divergente nella tua organizzazione.

La creazione di un provider OpenID sicuro è in realtà una grande responsabilità e non dovrebbe essere qualcosa che si frusta semplicemente schiacciando una libreria insieme a un server web. È possibile consentire agli utenti di utilizzare i propri OpenID e quindi disporre di un database in cui gli utenti registrano i propri OpenID in modo che vengano riconosciuti come dipendenti/membri attraverso il sistema. Varie parti del sistema possono controllare un OpenID per l'adesione direttamente al database, oppure puoi utilizzare OAuth per verificare anche l'appartenenza.

Molto interessanti possibilità in cui è possibile combinare queste due tecnologie.

+1

Grazie per i post finora, alcune buone idee, ma ho ancora bisogno di sapere, se Kerberos non è la soluzione giusta, perché non è vero? –

+1

Se funzionerà per la tua situazione, Kerberos probabilmente è l'opzione migliore. –

4

Non c'è nulla di intrinsecamente sbagliato in esso, tranne che Kerberos non è realmente progettato per quel tipo di caso d'uso, e in genere non funziona bene con i firewall. Ad esempio, probabilmente non si desidera aprire l'accesso esterno allo stesso Kerberos KDC che si utilizza internamente.

Inoltre, se si intende MS Kerberos, e apparentemente lo si fa, l'apertura di Kerberos viene fornita con un intero ratto di protocolli MS che deve essere aperto prima o poi, perché i contenuti di livello superiore sono aggrovigliati con AD ecc. insieme a Kerberos.

che diceva:

sento che possiamo essere meglio con un [...] il nostro servizio di autenticazione

Quasi certamente no. In genere non si desidera reinventare la ruota e, se non si deve quindi, quella ruota. I protocolli di autenticazione sono generalmente difficili da fare e ancora più difficili per l'accesso al web. Rimani fedele a qualcosa che esiste già: autenticazione di base + SSL o certificati client e SSL, oltre al tracciamento di sessione (ancora su SSL se questo materiale è davvero importante) o un servizio LDAP distinto dal tuo annuncio. Questi approcci hanno tutti i loro problemi, ma non tanti quanti ne avrai col rotolare qualcosa di tuo.

1

Per i siti Web, è possibile utilizzare SPNego/GSS-API/Kerberos. Tutti i principali browser e server Web supportano SP Nego. Con LDAP, NFS e HAdoop che supportano tutti i Kerberos, dovresti dare un'occhiata a questa soluzione. Controlla il comando di arricciatura con l'opzione di negoziazione.

Problemi correlati