Sto tentando di autenticare un servlet in esecuzione in Tomcat 6 utilizzando Shiro.Utilizzo di JDBCRealm per autenticare l'utente con Shiro
Ho il seguente file shiro.ini:
[main]
ps = org.apache.shiro.authc.credential.DefaultPasswordService
pm = org.apache.shiro.authc.credential.PasswordMatcher
pm.passwordService = $ps
aa = org.apache.shiro.authc.credential.AllowAllCredentialsMatcher
sm = org.apache.shiro.authc.credential.SimpleCredentialsMatcher
jof = org.apache.shiro.jndi.JndiObjectFactory
jof.resourceName = jdbc/UserDB
jof.requiredType = javax.sql.DataSource
jof.resourceRef = true
realm = org.apache.shiro.realm.jdbc.JdbcRealm
realm.permissionsLookupEnabled = true
realm.credentialsMatcher = $pm
; Note factories are automatically invoked via getInstance(),
; see org.apache.shiro.authc.config.ReflectionBuilder::resolveReference
realm.dataSource = $jof
securityManager.realms = $realm
[urls]
/rest/** = authcBasic
/prot/** = authcBasic
e di seguito nel mio database:
mysql> select * from users;
+----------+------------------+----------+----------------------------------------------+--------------------------+
| username | email | verified | password | password_salt |
+----------+------------------+----------+----------------------------------------------+--------------------------+
| admin | [email protected]********* | 1 | ojSiTecNwRF0MunGRvz3DRSgP7sMF9EAR77Ol/2IAY8= | eHp9XedrIUa5sECfOb+KOA== |
+----------+------------------+----------+----------------------------------------------+--------------------------+
1 row in set (0.00 sec)
Se uso il SimpleCredentialsManager
è autentica bene contro una password in chiaro nella tabella utenti . Cercando di usare il PasswordMatcher
è stato estremamente frustrante.
La password e password_salt sono state ottenute tramite l'utilità shiro-tools Hasher
.
Quando si tenta di eseguire l'autenticazione contro una base HelloWorld
servlet che uso per la prova (percorso = riposo/ciao, context =/WS), ottengo il seguente nei registri:
15:35:38.667 [http-8080-2] TRACE org.apache.shiro.util.ClassUtils - Unable to load clazz named [ojSiTecNwRF0MunGRvz3DRSgP7sMF9EAR77Ol/2IAY8=] from class loader [WebappClassLoader
context: /ws
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[email protected]
]
(log completi a https://gist.github.com/recurse/5915693)
Sembra che stia cercando di caricare la mia password con hash come nome di classe. È un bug o un errore di configurazione da parte mia? Se si tratta di un bug, come posso aggirarlo? Se si tratta di un errore di configurazione, cosa mi manca?
proprio quello che stavo cercando, grazie, btw Avete seguito qualche tutorial per questo tipo di set up? Stavo cercando di integrare il mio jdbc realm con sha hash e non riuscivo a trovare alcun tutorial pertinente. – abdu
No. Ho letto la documentazione sul sito di Shiro per capire la struttura di base dell'API; quindi, ho controllato il codice e ho invertito la configurazione JDBC. – Recurse