Próbuję uwierzytelnić serwlet działający w Tomcat 6 przy użyciu Shiro.Używanie JDBCRealm do uwierzytelniania użytkownika za pomocą Shiro
Mam następujący plik 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
i następujący w mojej bazy danych:
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)
Jeśli używam SimpleCredentialsManager
uwierzytelnia grzywny przeciwko zwykłego tekstu hasła w tabeli użytkowników . Próba użycia telefonu PasswordMatcher
była wyjątkowo frustrująca.
Hasło i password_salt zostały uzyskane za pomocą narzędzia shiro-tools Hasher
.
Kiedy próbuję uwierzytelnić podstawowego HelloWorld
serwletu używam do testowania (path = reszta/hello, context =/WS), otrzymuję następujący w dziennikach:
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]
]
(pełny raport na https://gist.github.com/recurse/5915693)
Wygląda na to, że próbuję załadować moje hashowane hasło jako nazwę klasy. Czy to błąd, czy błąd konfiguracji z mojej strony? Jeśli jest to błąd, jak mogę go obejść? Jeśli jest to błąd konfiguracji, czego mi brakuje?
tylko to, co szukałem, dziękuję btw czy wypełniania żadnych samouczek dla tego rodzaju skonfigurować? Próbowałem zintegrować moją domenę jdbc z sha hashe i nie mogłem znaleźć żadnych odpowiednich tutoriali. – abdu
Nie. Przeczytałem dokumentację na stronie Shiro, aby zrozumieć podstawową strukturę interfejsu API; następnie sprawdziłem kod i przetasowałem konfigurację JDBC. – Recurse