1

SQLLoginModule をデプロイメントに追加しました (TomEE 1.5.1):

  1. login.config を指すシステム プロパティ
  2. SQLLogin レルムを使用するように構成された login.config
  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 アクセス拒否エラーが発生します。

何かご意見は?

4

1 に答える 1

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"

これで問題は解決しました。

于 2013-05-11T19:06:26.920 に答える