私はWildfly 8.2.0.FinalのDatabaseloginを使用してアプリケーションを保護しようとしています。
私はstandalone.xmlで私のデータソースを設定し、私がデータベースにアクセスできるように動作するようです: <datasource jndi-name="java:/jdbc/Racoonda" pool-name="RacoondaDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/racoonda</connection-url> <driver>mysql</driver> <pool> <min-pool-size>1</min-pool-size> <max-pool-size>100</max-pool-size> <prefill>true</prefill> <use-strict-min>false</use-strict-min> <flush-strategy>Gracefully</flush-strategy> </pool> <security> <user-name>root</user-name> <password>root</password> </security> <validation> <check-valid-connection-sql>select 1</check-valid-connection-sql> <validate-on-match>true</validate-on-match> <background-validation>true</background-validation> <background-validation-millis>10000</background-validation-millis> </validation> <timeout> <idle-timeout-minutes>10</idle-timeout-minutes> </timeout> <statement> <prepared-statement-cache-size>10</prepared-statement-cache-size> <share-prepared-statements>true</share-prepared-statements> </statement> </datasource>
そして、次のように私もstandalone.xmlに私のセキュリティドメインを設定した:
<security-domain name="racoondaAdmin" cache-type="default"> <authentication> <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required"> <module-option name="dsJndiName" value="java:/jdbc/Racoonda"/> <module-option name="principalsQuery" value="SELECT password FROM Admin WHERE id=?"/> <module-option name="rolesQuery" value="SELECT 'Admin', 'Roles' FROM dual"/> </login-module> </authentication> </security-domain>
私はドメインを追加しました私のリソースに/ WEB-INF /のjboss-web.xmlの:セキュリティドメインが呼び出されていない(動作中)
`<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<security-domain>racoondaAdmin</security-domain>
</jboss-web>`
私はその後、リソース/ WEB-INF/web.xmlに自分のアプリケーションを確保しようとした:
`<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<distributable/>
<security-constraint>
<display-name>racoonda</display-name>
<web-resource-collection>
<web-resource-name>racoonda</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
<context-param>
<param-name>resteasy.role.based.security</param-name>
<param-value>true</param-value>
</context-param>
<security-role>
<role-name>Admin</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Application</realm-name>
</login-config>
</web-app>`
データベースアクセスは、私が安全にしようとしているサービスから値を得ることができます(データベースから取得します)。
しかし、資格情報を入力せずにアクセスできます。私はセキュリティのためのログレベルをTRACEに置き、私が見つけることができるすべてのアプローチを試しました。もし誰かが助けてくれれば、それは大いに感謝します。事前に感謝します
私はこれを手作業で行い、ファイルをrezippingしようとしましたが、wildflyがエラーを投げました(パッケージされた方法が気に入らなかったようです)、webappフォルダはWEB-INF/classes/WEB-INFフォルダ – Abbel
OK、今度は(resources/webappフォルダ内のWEB-inFとMETA-INFを使って)デプロイしました。同じ動作をしています – Abbel
ああ申し訳ありませんが、私はそれを誤って読み込んでいます – Abbel