2016-03-29 14 views
0

統合テストEARについては、Wildflyが特定の役割を持つ別のユーザーにログインできるようにする必要があります。Wildflyログインユーザー名とロール

  • org.jboss.security.auth.spi.SimpleServerLoginModuleは私が
  • org.jboss.security.auth.spi.IdentityLoginModuleは異なるユーザーに

を許可していないので、明らかに私は別の何かを使用する必要がある役割を指定することはできません。 JBoss tutorialで示唆したように

<datasources> 
    <datasource jndi-name="java:/AcmeDS" pool-name="AcmeDS" enabled="true"> 
    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> 
    <driver>h2</driver> 
     <pool> 
      <min-pool-size>10</min-pool-size> 
      <max-pool-size>20</max-pool-size> 
      <prefill>true</prefill> 
     </pool> 
     <security> 
      <user-name>sa</user-name> 
      <password>sa</password> 
     </security> 
    </datasource> 
    <drivers> 
     <driver name="h2" module="com.h2database.h2"> 
      <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
     </driver> 
    </drivers> 
</datasources> 

<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" 
     flag="required"> 
    <module-option name="dsJndiName" value="java:/AcmeDS" /> 
    <module-option name="principalsQuery" value="SELECT ?" /> 
    <module-option name="rolesQuery" value="SELECT 'my_role', 'Roles'" /> 
    <module-option name="password-stacking" value="useFirstPass" /> 
</login-module> 

... AAAND:私はこのような一時的なデータベースを使用しようとしました。それでも私は、クライアントのために、次の例外を取得:

java.lang.RuntimeException: javax.security.sasl.SaslException: Authentication failed: the server presented no authentication mechanisms 
at org.jboss.ejb.client.remoting.IoFutureHelper.get(IoFutureHelper.java:92) 
at org.jboss.ejb.client.remoting.ConnectionPool.getConnection(ConnectionPool.java:77) 
at org.jboss.ejb.client.remoting.RemotingConnectionManager.getConnection(RemotingConnectionManager.java:51) 
at org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.setupEJBReceivers(ConfigBasedEJBClientContextSelector.java:155) 
at org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.getCurrent(ConfigBasedEJBClientContextSelector.java:115) 

5分後、私は(私はすべての変更を認識していないよ)得た:all available authentication mechanisms failed

(それは私が役割を必要としポイントまで右に働きましたクライアント側の設定は問題ありません)

どうしたのですか? Wildflyに少なくとも例外を表示するようにするにはどうすればいいですか?何か問題をデバッグすることができますか? Willyに特定の役割を持つ異なるユーザーを認知させるためのより良い方法はありますか?

答えて

1

Java Security Quickstart Archetypeをご覧ください。 Java EE Securityは、少なくともあなたがやろうとしているレベルでは機能しています。要するに

、あなたはセキュリティドメインを持っている必要があり、より多くのようにように:

<security-domain name="jboss-security-quickstart" cache-type="default"> 
<authentication> 
    <login-module code="Database" flag="required"> 
     <module-option name="dsJndiName" value="java:jboss/datasources/ExampleDS"/> 
     <module-option name="principalsQuery" value="SELECT PASSWORD FROM USER WHERE EMAIL=?"/> 
     <module-option name="rolesQuery" value="SELECT R.ROLE, 'Roles' FROM ROLE R INNER JOIN USER_ROLE UR ON UR.ROLES_ID = R.ID INNER JOIN USER U ON U.ID = UR.USER_ID WHERE U.EMAIL=?"/> 
     <module-option name="hashAlgorithm" value="SHA-256"/> 
     <module-option name="hashEncoding" value="base64"/> 
     <module-option name="hashCharset" value="utf-8"/> 
     </login-module> 
    </authentication> 
</security-domain> 

あなたはそれを指すあなたのWEB-INFディレクトリにあるjboss-web.xmlのを持っている必要があります。

<!DOCTYPE jboss-web> 
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.jboss.org/schema/jbossas 
    http://www.jboss.org/schema/jbossas/jboss-web_7_2.xsd"> 
    <!-- Configure usage of the security domain "javaee-security-quickstart" --> 
    <security-domain>javaee-security-quickstart</security-domain> 
    <disable-audit>true</disable-audit> 
</jboss-web> 

そして、それを使用してweb.xmlファイル:

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>User Views</web-resource-name> 
     <url-pattern>/views/user/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>ADMIN</role-name> 
     <role-name>USER</role-name> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/views/login.xhtml</form-login-page> 
     <form-error-page>/views/login.xhtml?Retry=True</form-error-page> 
    </form-login-config> 
</login-config> 
<security-role> 
    <role-name>ADMIN</role-name> 
</security-role> 
<security-role> 
    <role-name>USER</role-name> 
</security-role> 

これらは基本ですが、それはアクションでそれを見るために少し簡単です。

+0

ありがとうございます。可能であれば、実際にはデータベースを用意したくありません。セットアップがはるかに複雑になるからです。 –

関連する問題