我创建了一个Shiro Realm,用于基于this extension的x509证书。
" protected X509AuthenticationInfo doGetX509AuthenticationInfo(X509AuthenticationToken token)
"方法被执行(即getAuthenticationInfo(token)
),验证我的用户并似乎执行return X509AuthenticationInfo
。
然而,在那之后,页面保持空白!它不会被重定向到任何地方。如果我使用#34; anon"或基本身份验证,则我的页面会正确显示(以验证页面不应为空白)。可能会发生什么?
shiro.ini
[main]
x509Realm = com.flowersforyou.shiro.myRealm
securityManager.realms = $x509Realm
x509 = org.apache.shiro.web.filter.authc.X509AuthenticationFilter
[urls]
/** = x509
修改
我尝试使用
x509.loginUrl = /err.xhtml
[urls]
/err.xhtml = anon
/** = x509
但它仍然显示一个空白页面,所以我认为在验证失败时我被重定向到任何地方
修改
我的回答解释了可能发生的事情但现在如何解决它。所以我认为空白页是因为某些事情失败(空指针或其他)。但是,我认为这应该通过异常引发500错误,就像其他一切一样。当引发500错误时,我的应用程序将捕获它并显示自定义错误页面。这不会发生在这里。任何捕获该错误的解决方案?
答案 0 :(得分:0)
我想我已经发现了正在发生的事情......
我在.ini中错过了一个凭据匹配器:
sha256Matcher = org.apache.shiro.authc.x509.X509CredentialsSha256Matcher
x509Realm.credentialsMatcher = $sha256Matcher
如果没有这个,我认为身份验证失败(或者因为没有匹配器设置,或者因为它使用的是默认设置,而不是普通密码),并且它正在以空白页面静默完成(也许我有如果身份验证失败,定义某个地方去哪里。如果有人知道该怎么做,或者为什么我得到一个空白页面,请告诉我完成答案。
修改强>
至于空白页面,我发现没有异常被提出。更多详情here。