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
유틸리티를 통해 얻은 것입니다.
나는 시험 (경로 = 나머지/안녕하세요, 컨텍스트 =/WS), 나는 로그에 다음과 같은 수에 사용할 기본 HelloWorld
서블릿에 대해 인증 할 때 :
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)
해시 된 암호를 클래스 이름으로로드하려고 시도하는 것 같습니다. 이것은 버그입니까, 아니면 내 구성 오류입니까? 버그 일 경우 어떻게 해결할 수 있습니까? 구성 오류 일 경우 무엇이 누락 되었습니까?
그냥 내가 무엇을 찾고 있었다, 당신이, BTW 사용자가 설정 이런 종류의에 대한 튜토리얼을 따라 않았다 감사 : 사용에서 여기에 설명 된대로 그럼 당신은 PasswordService를 사용할 수 있습니까? 내 jdbc 영역을 sha 해시와 통합하려고 시도하고 관련 튜토리얼을 찾을 수 없었다. – abdu
아니요. Shiro 사이트의 설명서를 읽으면 API의 기본 구조를 이해할 수 있습니다. 그런 다음 코드를 체크 아웃하고 JDBC 구성을 리버스 엔지니어링했습니다. – Recurse