如何避免在glassfish-web.xml文件中添加主体?

时间:2012-11-30 20:16:47

标签: security java-ee web-applications glassfish jaas

我有一个小型的Web应用程序,它使用jdbcRealm进行身份验证/授权。 仅当我将用户名放在glassfish-web.xml

中时,授权才有效
<glassfish-web-app error-url="">
    <class-loader delegate="true"/>
    <jsp-config>
        <property name="keepgenerated" value="true">
            <description>Keep a copy of the generated servlet class' java code.</description>
        </property>
    </jsp-config>
    <security-role-mapping>
        <role-name>connexion</role-name>
        <principal-name>test</principal-name>
        <group-name>connexion</group-name>
    </security-role-mapping>
</glassfish-web-app>

的web.xml

<!--other stuff-->
     <security-constraint>
            <web-resource-collection>
                <web-resource-name>secure</web-resource-name>
                <url-pattern>/Downloader</url-pattern>
                <url-pattern>/start.html</url-pattern>  
            </web-resource-collection>
            <auth-constraint>
                <role-name>connexion</role-name>
            </auth-constraint>
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>my_realm</realm-name>
            <form-login-config>
                <form-login-page>/login.html</form-login-page>
                <form-error-page>/error.html</form-error-page>
            </form-login-config>
        </login-config>

        <security-role>

            <role-name>connexion</role-name>
        </security-role>
<!--other stuff-->

如果我从glassfish-web中删除了主体,我会收到403错误访问被拒绝。 是否有任何解决方案可以避免在xml文件中添加主体? 感谢。

1 个答案:

答案 0 :(得分:0)

是的,有。在您的安全领域(来自web.xml的内容,即my_realm)将您登录的用户名与相应的组相关联 - 在您的情况下为connexion。换句话说,属于组connexion的每个用户都可以访问受保护资源,因此您不必枚举主体 - 这就是组的目的。

参考&amp;进一步阅读:Java EE 6 tutorial