Ich versuche, ein Servlet in Tomcat 6 mit Shiro authentifizieren.Mit JDBCRealm authentifizieren Benutzer mit Shiro
Ich habe folgende shiro.ini Datei:
[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
und folgende Unterlagen in meiner Datenbank:
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)
Wenn ich die SimpleCredentialsManager
verwenden es authentifiziert Bußgeld gegen ein Klartext-Passwort in der Tabelle users . Der Versuch, das PasswordMatcher
zu verwenden, war extrem frustrierend.
Das Passwort und Passwort_Salz wurden über das Dienstprogramm shiro-tools Hasher
erhalten.
Wenn ich versuche, gegen eine grundlegende HelloWorld
Servlet ich für den Test (path = rest/hallo, context =/ws) für die Authentifizierung verwenden, erhalte ich die folgende in den Protokollen:
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]
]
(Vollprotokoll an https://gist.github.com/recurse/5915693)
Es scheint zu versuchen, mein Hash-Passwort als Klassenname zu laden. Ist das ein Fehler oder ein Konfigurationsfehler meinerseits? Wenn es ein Fehler ist, wie kann ich es umgehen? Wenn es ein Konfigurationsfehler ist, was fehlt mir?
genau das, was ich suchte, danke, btw folgte Sie eine Anleitung für diese Art von eingerichtet? Ich habe versucht, meinen jdbc-Bereich mit Sha-Hashes zu integrieren und konnte keine relevanten Tutorials finden. – abdu
Nein. Ich habe die Dokumentation auf der Shiro-Site gelesen, um die grundlegende Struktur der API zu verstehen. Dann habe ich den Code ausgecheckt und die JDBC-Konfiguration rückgängig gemacht. – Recurse