JAAS 安全域信息只能在服务器特定的部署描述符中指定吗?
我正在 JSF 中进行基于表单的身份验证,并且可以使其工作,但它需要特定于服务器的部署描述符来指定 JAAS 安全域信息。
例如。在 JBoss 6 上,我需要一个 WEB-INF/jboss-web.xml
,其中包含以下内容:
<jboss-web>
<security-domain>java:/jaas/myAppDomain</security-domain>
</jboss-web>
在 glassfish 上,类似的内容需要位于 WEB-INF/sun-web.xml
中反而。
在 EE6 中是否有供应商中立的方法来做到这一点?如果没有那么为什么?
I'm doing form-based authentication in JSF and I can get it to work but it requires a server specific deployment descriptor to specify the JAAS security domain info.
eg. on JBoss 6 I need a WEB-INF/jboss-web.xml
with the following:
<jboss-web>
<security-domain>java:/jaas/myAppDomain</security-domain>
</jboss-web>
On glassfish something similar needs to be in WEB-INF/sun-web.xml
instead.
Is there a vendor neutral way to do this in EE6 ? And if no then why ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,有。您需要在 web.xml 文件中指定领域名称,其方式类似于下面所示的方式:
上述内容在 Glassfish 中有效,sun-web.xml 中没有任何条目,除了角色到组映射(即用于强制执行授权约束)。
当您的 Web 模块和 EJB 模块必须仅使用 JBoss 中一个安全管理器的主体时,在 JBoss 部署描述符中指定
security-domain
元素是一种更好的方法(以及其他容器中的等效实现)。考虑到 JAAS 登录模块的工作方式以及无法在
ejb-jar.xml
中指定用于身份验证的领域,EJB 容器很可能会允许基于来自一个成功的身份验证响应的业务方法调用。不同的登录模块(与您的预期不同)。这意味着不同领域但同一组(映射到业务方法允许的角色)中的用户能够调用业务方法。为了避免这种情况,人们将在特定于供应商的部署描述符中指定安全域。注意 - 我不确定容器在为 WAR 中部署的 EJB 选择 JAAS 登录模块时的行为。
Yes, there is. You'll need to specify the realm name in the web.xml file, in a manner similar to the one shown below:
The above works in Glassfish without any entries in sun-web.xml, except for the role to group mapping (that is used for enforcing authorization constraints).
Specifying the
security-domain
element in the JBoss deployment descriptor is a better approach when you have a web module and an EJB module that must use principals from only one Security Manager in JBoss (and the equivalent implementations in other containers).Given how JAAS login modules work and that one cannot specify a realm for authentication in
ejb-jar.xml
, it is quite possible that the EJB container will permit a business method invocation based on successful authentication response from a different Login Module (than what you intended). This would mean that a user in a different realm but the same group (mapped to the permitted role for the business method) is capable of invoking the business method. It is to avoid this scenario that one would specify the security domain in the vendor-specific deployment descriptor.Note - I'm unsure of the behavior of the container in choosing a JAAS Login Module for EJBs deployed in a WAR.