2016-06-30 4 views
0

Я пытаюсь защитить свое приложение, используя Databaselogin в Wildfly 8.2.0.Final.
Я настроил мой источник данных в 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 и пробовал каждый подход, который мог найти, Если кто-то мог бы помочь, это было бы весьма признательно. Заранее спасибо

ответ

1

Поместите вам конфигурационные файлы в SRC/главная/веб-приложение/WEB-INF.

+0

Я попытался сделать это вручную и распаковать файл, но затем wildfly выдал ошибку (казалось, что ей не понравилось, как она была упакована), и папка webapp копируется один в один в WEB-INF/classes/WEB-INF папка – Abbel

+0

ОК, теперь я развернул ее так (с WEB-inF и META-INF в папке resources/webapp), и он имеет такое же поведение – Abbel

+0

ah извините, я неправильно прочитал его, я попробую прямо под основной папкой – Abbel

0

Да, я также добавил его в качестве домена по умолчанию, так как некоторые другие сообщения указывали на это. Похоже, wildfly не вызывает его вообще
EDIT: я заметил, что я ответил на мой вопрос, не @Alf ś комментарий ... Пожалуйста, игнорируйте это один :)

+0

Попробуйте получить HttpServletRequest из вашего класса jax-rs и вызовите [isUserInRole («Admin»)] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletRequest.html # isUserInRole-java.lang.String-) и [getRemoteUser()] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletRequest.html#getRemoteUser--), чтобы понять, если вы каким-то образом вошли в систему или нет. – Alf

+0

Пользователь в роли Возвращает false и remoteuser равно null:/кажется, что безопасность Домен еще не используется – Abbel

+0

проверить свой артефакт войны, если файлы конфигурации находятся в нужном месте – Alf

 Смежные вопросы

  • Нет связанных вопросов^_^