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.
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?