首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAAS安全域信息只能在服务器特定的部署描述符中指定吗?

JAAS安全域信息只能在服务器特定的部署描述符中指定吗?
EN

Stack Overflow用户
提问于 2011-06-28 06:43:57
回答 1查看 700关注 0票数 1

我正在JSF中进行基于表单的身份验证,我可以让它工作,但它需要一个特定于服务器的部署描述符来指定JAAS安全域信息。

例如:在JBoss 6上,我需要一个具有以下内容的WEB-INF/jboss-web.xml

代码语言:javascript
复制
<jboss-web>
    <security-domain>java:/jaas/myAppDomain</security-domain>
</jboss-web>

在玻璃鱼上,类似的东西需要在WEB-INF/sun-web.xml中代替。

在EE6中是否有一种与供应商无关的方法来做到这一点?如果不是,那为什么?

EN

回答 1

Stack Overflow用户

发布于 2011-07-10 03:01:38

在EE6中是否有一种与供应商无关的方法来做到这一点?

是的,有。您需要在web.xml文件中指定领域名称,方式类似于如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
...
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>myRealm</realm-name> <!-- the name of the realm created in the application server should be specified here -->
        <form-login-config>
            <form-login-page>/login.xhtml</form-login-page>
            <form-error-page>/login-error.xhtml</form-error-page>
        </form-login-config>
    </login-config>
...
</web-app>

上面的内容在Glassfish中工作,除了用于强制授权约束的组映射角色之外,在sun-web.xml中没有任何条目。

security-domain部署描述符中指定JBoss元素是一种更好的方法,因为您有一个web模块和一个EJB模块,它们只能使用JBoss中一个Security的主体(以及其他容器中的等效实现)。

考虑到JAAS登录模块的工作方式以及不能在ejb-jar.xml中指定用于身份验证的领域,很有可能EJB容器将允许基于来自不同login的成功身份验证响应的业务方法调用(而不是您所期望的)。这意味着不同领域的用户(映射到业务方法的允许角色)相同的组能够调用业务方法。为了避免这种情况,人们会在特定于供应商的部署描述符中指定安全域。

注意-我不确定容器在为部署在WAR中的EJB选择JAAS登录模块时的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6502590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档