通过getAuthenticationInfo

时间:2017-06-27 14:41:31

标签: shiro

我创建了一个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错误时,我的应用程序将捕获它并显示自定义错误页面。这不会发生在这里。任何捕获该错误的解决方案?

1 个答案:

答案 0 :(得分:0)

我想我已经发现了正在发生的事情......

我在.ini中错过了一个凭据匹配器:

sha256Matcher = org.apache.shiro.authc.x509.X509CredentialsSha256Matcher
x509Realm.credentialsMatcher = $sha256Matcher

如果没有这个,我认为身份验证失败(或者因为没有匹配器设置,或者因为它使用的是默认设置,而不是普通密码),并且它正在以空白页面静默完成(也许我有如果身份验证失败,定义某个地方去哪里。如果有人知道该怎么做,或者为什么我得到一个空白页面,请告诉我完成答案。

修改

至于空白页面,我发现没有异常被提出。更多详情here