Come si dovrebbe gestire l'autenticazione su una linea personalizzata di software aziendale

2

Sto scrivendo una linea di software aziendale per un'azienda e vogliamo autenticare gli utenti, così possiamo gestire il flusso di lavoro e fare un po 'di controllo. Fondamentalmente i miei datori di lavoro non vogliono che io torni via dall'autenticazione di Windows a causa di alcune restrizioni di rete (io davvero non voglio entrarci ma è una combinazione di configurazione di rete scarsa e padroni che vogliono sapere se c'è un altro modo per farlo)

Sto usando c #, wpf, MVVM, PRISM

Ho letto un po 'di password di hashing, salatura, ecc. e più leggo più mi rendo conto che non dovrei scrivere la sezione di sicurezza di questo programma, dato che sono fondamentalmente faaaaaaar da qualificato.

Eric Lippert ha una buona introduzione di base in sicurezza, in cui avverte il lettore all'inizio che non dovresti progettare il tuo sistema di sicurezza in quanto non ne sai abbastanza.

Voglio sapere, quali sono le alternative?

  • Visto che non dovrei scriverlo da solo, mi piacerebbe saperlo da dove dovrei prenderlo?

  • Assunzione esperti di sicurezza per scriverlo?

  • Esiste un programma di sicurezza di terze parti con cui dovrei interfacciarmi?

  • Eseguo l'outsourcing del progetto ma lo implemento da solo?

  • Chi è il grande giocatore in questo settore che dovrei guardare?

Modifica

In risposta alle domande poste da Steve:

Dove sono i dati?

  • Beh, questo non è stato ancora deciso. Ho pensato che potrebbe esserci qualche sistema in grado di ospitare i dati di autorizzazione (e le chiamate da e verso di esso) in modo sicuro e si chiedeva che cosa fosse quel sistema. Tuttavia abbiamo un server SQL che immagino sarà probabilmente dove verranno conservati i dati. Quindi i dati sono archiviati su un server Microsoft SQL e potrebbero essere accessibili in qualche modo dai client sulla rete (affinché i client possano autenticarsi). È concepibile che scriva un servizio di autenticazione che gira su questo server e accede ai dati direttamente tramite SQL (quindi non sulla rete). I client dovrebbero quindi interfacciarsi con questo servizio.

Come stai accedendo ai dati?

  • Bene, come ho detto è un server SQL. Il sistema è puramente interno (progetteremo un'interfaccia web per i clienti in una fase successiva ma probabilmente utilizzeremo un'altra autenticazione basata sul web che, per quanto ne so, sarà molto più semplice perché queste cose sono integrate nella maggior parte delle tecnologie di sviluppo web ). C'è una linea diginet che ha una VPN in un secondo ufficio che probabilmente vorrebbe anche l'accesso.

Dove voglio memorizzare gli utenti?

  • Siamo praticamente d'accordo ovunque, con 3 restrizioni

    • Non può costare troppo, quindi dovremmo probabilmente usare tecnologie che abbiamo già (uno dei nostri server, SQL o qualcosa del genere)

    • La gestione vuole sicurezza. Per quanto è possibile sul nostro piccolo budget.

    • La gestione è un po 'incerta sull'hosting di tali dati sensibili esternamente, quindi dobbiamo praticamente controllarli e controllarli ovunque siano archiviati.

Come vuoi gestire gli utenti?

  • Ad essere onesti non sono sicuro di cosa questa domanda ti stia davvero chiedendo. Tuttavia, ritengo importante che io menzioni qui che stiamo scrivendo un'app personalizzata per il business . Questa app ha bisogno di per essere in grado di interfacciarsi in modo apparentemente trasparente con questa soluzione, in modo che l'utente effettui l'accesso tramite il nostro sistema (che probabilmente utilizza un'API offerta da questa soluzione per effettuare chiamate direttamente al sistema), e l'autenticazione del sistema controlla l'accesso dell'utente alla nostra app personalizzata.

Più ne parlo più penso che sia un compito arduo ottenere una soluzione preconfezionata qui, ma continuo a tornare a quello che ha detto Eric Lippert:

"Consentitemi di darvi tutta la mia prudenza standard riguardo al rollare i vostri algoritmi crittografici e i vostri sistemi di sicurezza: non ."

Non sono qualificato per scrivere correttamente. non sarà sicuro. Quindi cosa fanno le persone quando sviluppano il proprio software?

    
posta ExitMusic 23.05.2012 - 08:12
fonte

3 risposte

2

Come Graham ha detto che dipende davvero da cosa si vuole proteggere contro. Ma data la tecnologia che hai elencato, la grande spinta (di marketing) da parte di Microsoft consiste nell'utilizzare l'Autenticazione / Autorizzazione basata sulle attestazioni tramite la Federazione: link .

Tuttavia, dal momento che solo questo probabilmente non ti aiuta affatto, potrebbe essere necessario porre qualche altra domanda:

  • Dove sono i dati?
  • Come stai accedendo ai dati? (Ad esempio, direttamente tramite connessioni SQL / ORM o tramite un servizio Web)
  • Dove vuoi per memorizzare gli utenti?
  • Come vuoi gestire gli utenti?

Da una prospettiva tecnologica ci sono molte opzioni che non implicano la scrittura di cose da zero, compresi prodotti di terze parti con cui integrarsi. Tuttavia, i prodotti di terze parti di solito esistono per set di funzionalità molto specifici, ad es. autenticazione multifattoriale.

EDIT:

So what is it that people actually do when developing their own software?

Continuano a scrivere il proprio codice di sicurezza anche se non è sicuro.

Pensando a lungo termine, è probabilmente meglio creare un servizio WCF protetto da WIF e archiviare le credenziali nel database utilizzando i provider di Membership ASP.NET. C'è un progetto open source che ti farà ottenere ciò di cui hai bisogno: link

Tutte le chiamate al servizio WCF richiederanno l'autenticazione, quindi il servizio sarebbe l'interfaccia comune per vari tipi di applicazioni che accedono ai dati. Richiede un po 'più di lavoro, ma ti salverà a lungo termine.

    
risposta data 23.05.2012 - 20:22
fonte
1

Dato che sei un negozio Microsoft, e dato che sembra che ti sarebbe comodo implementarlo se riuscissi a cavalcare il dominio esistente, hai considerato di creare un tuo dominio AD separato? Presumibilmente hai già amministratori di Windows in giro che potrebbero occuparsene.

Naturalmente altre soluzioni potrebbero essere più adatte, ma questo ha una certa attrazione rapida e sporca.

    
risposta data 24.05.2012 - 12:03
fonte
0

Ci saranno altre risposte tecnicamente più utili a venire, quindi salva i tuoi voti per loro, ma se mi indulgerei:

Quali sono i tuoi attuali requisiti di sicurezza? Qual è la minaccia? Quanto strongmente hai bisogno di autenticarti? Hai persino bisogno di autenticarti?

Ad esempio, ho davvero un'app business distribuita dove gli utenti devono essere identificati, ma non autenticati. quando Bob usa questa app, l'app ha bisogno di lui per identificarsi come Bob, quindi può mostrare i dati di Bob, e quindi abbiamo una pista di controllo di ciò che ha fatto Bob, ma non ha bisogno di lui per dimostrare che è Bob.

Certo, Eve poteva venire e dire all'app che lei era Bob, ma non avrebbe guadagnato nulla. Suppongo che Eve possa vandalizzare i dati per dispetto, ma l'app è accessibile solo dall'interno della rete, ed è molto noiosa, e abbiamo dei backup, e del resto potremmo ricreare manualmente i dati di un giorno senza troppi problemi.

    
risposta data 23.05.2012 - 11:46
fonte

Leggi altre domande sui tag