Al momento utilizziamo Apache Shiro per le nostre esigenze di autenticazione degli utenti. Abbiamo bisogno dell'autorizzazione e dell'autenticazione dinamiche, in alcuni casi gli utenti verranno autenticati tramite Active Directory mentre altri verranno autenticati tramite JDBC, ma tutti gli utenti saranno autorizzati utilizzando JDBC.
Shiro si è dimostrato all'altezza, ma non bene. Funziona, ma solo qualche volta. I regni programmatici che ho creato non sembrano funzionare allo stesso modo ogni volta. A volte quando si tenta di accedere più volte fallirà, solo per riuscire infine. Questa è esattamente la stessa richiesta con gli stessi identici dati. Il debug mostra che a volte semplicemente non chiama le funzioni necessarie per ottenere i dati di autenticazione o di autorizzazione. Riavviare l'istanza di solito lo risolve, ma solo per un po 'di tempo. Sembra anche avere seri problemi con più applicazioni shiro esistenti sulla stessa istanza di Glassfish.
In quanto tale, Shiro sembra non essere una scelta sostenibile, soprattutto considerando la scarsa documentazione disponibile. Sto già sovrascrivendo i metodi di Shiro per dire esattamente come ottenere i dati, quindi mi piacerebbe semplicemente codificare le mie classi di autenticazione utente java.
Attualmente l'argomento migliore che ho sentito contro questo è che un sistema con codice personalizzato non è sicuro come quello standard del settore. Tuttavia, da quello che ho letto online e insegnato in classe, la maggior parte dei tentativi di hacking si concentrano sull'accesso a nomi utente e password, o su come inviare codice rouge nel sistema. La maggior parte dei metodi non viola effettivamente il software stesso; in pratica controlla solo i dati forniti e, a condizione che tutti gli input siano disinfettati, il software di autenticazione dell'utente non è di solito il problema. Questa valutazione è accurata?
Inoltre, ci sono delle insidie di cui dovrei essere a conoscenza? Capisco che ci sono altre opzioni come Spring Security o JAAS ma dal momento che ho già essenzialmente il sistema che ho bisogno di costruire all'interno di Shiro e devo solo rimuoverlo da quel software, sembra essere l'opzione migliore per usarlo a questo punto in il ciclo di sviluppo.