1

我已将 SQLLoginModule 添加到我的部署中(TomEE 1.5.1):

  1. 指向 login.config 的系统属性
  2. login.config 配置为使用 SQLLogin 领域
  3. server.xml 更新为使用此领域

这是 web.xml (我几乎可以肯定问题出在这里)

<security-constraint>
    <display-name>Unsecured</display-name>
    <web-resource-collection>
        <web-resource-name>Unsecured area</web-resource-name>
        <url-pattern>/login.html</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Entire Application</web-resource-name>
        <url-pattern>*.html</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>ADMIN</role-name>
        <role-name>SUPERUSER</role-name>
        <role-name>USER</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<security-role>
    <role-name>ADMIN</role-name>
</security-role>
<security-role>
    <role-name>SUPERUSER</role-name>
</security-role>
<security-role>
    <role-name>USER</role-name>
</security-role>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>SQLLogin</realm-name>
    <form-login-config>
        <form-login-page>/login.html</form-login-page>
        <form-error-page>/login.html</form-error-page>
    </form-login-config>
</login-config>

<welcome-file-list>
    <welcome-file>testRest.html</welcome-file>
</welcome-file-list>

部署和登录时,我什org.apache.openejb.core.security.jaas.SQLLoginModule至毫无例外地进行了远程调试,但由于某种原因,重定向到欢迎文件失败,并且出现 403 access-denied 错误。

有什么想法吗?

4

1 回答 1

2

所以,这是我个人“通过 dolorosa”之后的解决方案 :)
首先,错误出现在 server.xml JAASRealm 配置中。
使用http://tomee.apache.org/tomee-jaas.html上的说明,我使用了

userClassNames="org.apache.openejb.core.security.AbstractSecurityService$User"
roleClassNames="org.apache.openejb.core.security.AbstractSecurityService$Group"

下载tomcat源和一些调试后,我发现实际生成的Principalsorg.apache.openejb.core.security.jaas.SQLLoginModule是:

userClassNames="org.apache.openejb.core.security.jaas.UserPrincipal"
roleClassNames="org.apache.openejb.core.security.jaas.GroupPrincipal"

这解决了问题。

于 2013-05-11T19:06:26.920 回答