我正在尝试弄清楚登录模块标志如何在JAAS中工作(使用JBoss 5.1 EAP),我遇到了一个令人费解的情况,我希望有人可以为我澄清.
对于后台,我的login-config.xml如下所示:
<authentication-policy>
<authentication>
<login-module code="...loginModule1" flag="sufficient">
...
</login-module>
<login-module code="...loginModule2" flag="optional">
...
</login-module>
<login-module code="...loginModule3" flag="optional">
...
</login-module>
</authentication>
</authentication-policy>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,loginModule1是独立的,但loginModule2依赖于loginModule3.我遇到的问题是,如果loginModule1失败并且loginModule2和loginModule3都成功,我仍然会失败登录.如果我将loginModule1更改为可选,那么当loginModule1失败并且2和3成功时,我获得成功登录.
从JBoss安全文档(http://docs.jboss.org/jbossas/admindevel326/html/ch8.chapter.html):
sufficient: the LoginModule is not required to succeed. If it does succeed,
control immediately returns to the application (authentication does not proceed
down the LoginModule list). If it fails, authentication continues down the
LoginModule list.
Run Code Online (Sandbox Code Playgroud)
我基于这个想法,当具有足够标志的LoginModule失败,但是后面的LoginModule通过然后我会成功登录,任何人都知道为什么不是这种情况?
您应该查看javax.security.auth.login.Configuration类的java文档,它包含有关足够,必需,必需和可选含义的所有信息.你的问题与本段有关:
仅当所有必需和必需的LoginModule都成功时,整体身份验证才会成功.如果配置了足够的LoginModule并且成功,则只需要在该足够的LoginModule之前的必需和必需的LoginModule成功完成整个身份验证.如果没有为应用程序配置必需或必需的LoginModule,则必须至少有一个Sufficient或Optional LoginModule成功.
这是应该发生的事情,所以看起来你的设置是正确的,但有些东西没有正确返回所以一切都失败了.也许JBoss做的事情有点不同.
| 归档时间: |
|
| 查看次数: |
8350 次 |
| 最近记录: |