Shiroを使用してTomcat 6内で実行されているサーブレットを認証しようとしています。Shiroを使用してJDBCRealmを使用してユーザーを認証する
私は、次のshiro.iniのファイルがあります:私はSimpleCredentialsManager
を使用している場合、それはユーザーテーブルに平文パスワードに対する罰金認証
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)
:
[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
そして、私のデータベースに次のように。 PasswordMatcher
を使用しようとすると、非常にイライラしています。
パスワードとpassword_saltは、shiro-tools Hasher
ユーティリティで取得しました。
私は、私がテストに使用基本的なHelloWorld
サーブレット(パス=休息/こんにちは、コンテキスト=/WS)に対して認証しようとすると、私はログに次を得る:
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]
]
(フルログでhttps://gist.github.com/recurse/5915693)
ハッシュされたパスワードをクラス名として読み込もうとしているようです。これはバグですか、私の設定エラーですか?バグの場合、どうすれば回避できますか?設定エラーの場合、何が欠けていますか?
ところで、あなたは、セットアップのこの種の任意のチュートリアルに従うのですか?私は自分のjdbc領域をshaハッシュと統合しようとしていて、関連するチュートリアルを見つけることができませんでした。 – abdu
いいえ。私はShiroサイトのドキュメントを読んで、APIの基本構造を理解しています。次に、コードをチェックアウトして、JDBC構成をリバース・エンジニアリングしました。 – Recurse