2013-05-09 43 views
1

我已經加入了SQLLoginModule到我的部署(TomEE 1.5.1):TomEE,JAAS,SQLLoginModule和403

指向的login.config
  1. 系統屬性
  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訪問被拒絕的錯誤。

有什麼想法?

回答

2

因此,這裏解決方案後,我的個人「via 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的來源後和一些調試,我發現,實際產生的校長由org.apache.openejb.core.security.jaas.SQLLoginModule是:

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

這解決了這個問題。