Abbiamo un'applicazione ASP.NET MVC utilizzata da persone di altre organizzazioni. Alcune delle funzionalità sono accessibili tramite un login moduli. Altre funzioni sono accessibili come metodi API autentificati da SHA256-HMAC.
Abbiamo due clienti che chiedono qualcosa come SSO per i loro utenti:
-
Gli utenti di un client eseguono attualmente l'accesso utilizzando WebSeal . Nessuno di questi utenti conosce le loro password: sono tutte gestite dal client tramite la nostra API di gestione utenti. Non abbiamo dovuto fare nulla di speciale per questi utenti finora, ma loro dicono che quando disabiliteremo TLS1.0 nel prossimo futuro, la loro installazione di WebSeal non funzionerà più (non so perché, dal momento che WebSeal sembra supportare TLS1. 2, ma credo che siano ben informati).
-
Un altro gruppo chiede se è possibile ignorare la pagina di accesso ai moduli dopo che gli utenti hanno effettuato l'accesso al proprio portale.
Mi chiedo se possiamo soddisfare entrambi i gruppi fornendo un'API autenticata da HMAC che restituisce un token di autenticazione per il nome utente fornito, che può quindi utilizzare per connettersi al sito web. Creeremo un ruolo (forse chiamato ClientAuthAdmin) e solo i membri di quel ruolo (un utente di sistema per client) sarebbero autorizzati a chiamare il metodo API.
Domande che mi sono posto a proposito di questo, e le mie risposte per i principianti della sicurezza sono:
-
Va bene passare un token di autenticazione in giro? Questa risposta menziona il fatto di passarli in giro come beneficio dei token di autenticazione. Questa domanda sembra riguardare fare qualcosa di simile.
-
Va bene consentire a un utente di ottenere un token di autenticazione per un altro? Non implica la divulgazione di password. L'unico danno che posso immaginare potrebbe essere fatto se il token di autenticazione fosse utilizzato per eseguire un'azione non eseguita dall'utente autorizzato. Evitare ciò sarebbe responsabilità dell'organizzazione cliente.
-
Funzionerà per i nostri clienti? Non l'ho ancora capito. Dovrebbero ottenere il token dalla nostra API utilizzando qualsiasi portale interno che stanno utilizzando, quindi allegarlo come cookie alla loro richiesta per una delle nostre pagine web. Sembra semplice, anche se non ho ancora capito i dettagli.
La mia domanda è: sarebbe sicuro come i nostri moduli esistenti?