LINUX.ORG.RU
решено ФорумAdmin

Openfire с кастомной базой.

 , , ,


0

2

Кто нибудь сталкивался с настройкой openfire с прикруткой кастомной базы с пользователями?

Проблема вот в чём:

Делаю всё так как показано в мануалине: http://community.igniterealtime.org/thread/44773 Но почему то моя существующая база с пользователями не используется. Пытаюсь подключиться к моему сервеу из пиджина, он говорит :not authorized. Если поставить галку создать пользователя, то пользователь создаётся в основной базе данных.


<jive>
<connectionProvider>
    <className>org.jivesoftware.database.DefaultConnectionProvider</className>  
  </connectionProvider>                                          

<database>                                                     
<defaultProvider>                                              
<driver>org.postgresql.Driver</driver>
<serverURL>jdbc:postgresql://127.0.0.1:5432 /openfiredb</serverURL>        
<username>openfire</username>                                  <password>123456</password>                                    <testSQL>select 1</testSQL>                                               
    <testBeforeUse>true</testBeforeUse>                                       
      <testAfterUse>true</testAfterUse>                                         
      <minConnections>5</minConnections>                                        
      <maxConnections>25</maxConnections>                                       
      <connectionTimeout>1.0</connectionTimeout>                                
    </defaultProvider>                                                          
  </database>                                                                   
  <setup>true</setup>                                                           
  <admin/>                                                                      
                                                                                
  <provider>                                                                    
    <auth>                                                                      
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>    
    </auth>                                                                     
    <user>                                                                      
      <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>    
    </user>                                                                     
  </provider>                                                                   
                                                                                
  <jdbcProvider>                                                                
    <driver>org.postgresql.Driver</driver>                                      
    <connectionString>jdbc:postgresql://10.10.15.67/openfireusers?user=openfire&amp;password=123456</connectionString>    
  </jdbcProvider>                                                               
                                                                                
                                                                                
  <jdbcAuthProvider>                                                            
     <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</passwordType>                                         
  </jdbcAuthProvider>                                                           
                                                                                
  <jdbcUserProvider>                                                            
     <loadUserSQL>SELECT name,email FROM user_info WHERE username=?</loadUserSQL>
     <userCountSQL>SELECT COUNT(*) FROM user_info<userCountSQL>                 
     <allUsersSQL>SELECT username FROM user_info</allUsersSQL>                  
     <searchSQL>SELECT username FROM user_info WHERE</searchSQL>                
     <usernameField>username</usernameField>                                    
     <nameField>name</nameField>                                                
     <emailField>email</emailField>                                             
  </jdbcUserProvider>                                                           
</jive>                                                                         
        


пробуй спарком подцепиться, родным клиентом и посмотри что тот скажет. У меня была пробелма подобная когда через АД авторизовался мирандой. Хотя спарк все ок.

Onixus
()
Ответ на: комментарий от wnc_21

Я даже написал свой AuthProvider засетил туда придефайненые имена пароли, методы дёргаются, а логин не проходит. С кастомными(и JDBCAuthProvider) провайдерами выдаёт ошибку. org.jivesoftware.openfire.net.SASLAuthentication - User Login Failed. PLAIN authentication failed for: test1

wnc_21
() автор топика

Решено!

Незнаю почему и по какой причине в документации проекта

http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-in...

не сказано что это всё барахло не работает так как описано. Хотя может и работает, но только в том случае, если сервер ни разу не запускался.

По факту настройки хранятся не в xml а в базе данных, в таблице ofproperty и после перезапуска сервера, часть настроек, которые прописываются в xml стираются в xml и переносятся в бд. Бд та, на которую изначально настраивается сервер.

Главная проблема в переносе настроек из xml в бд, закулючается в том, что настройки переносятся только в том случае, если записи в таблице свойств нет. Если такая запись уже есть, то она не апдейтится.

Если не париться с xml а на прямую инсёртами настраивать таблицу ofproperty то всё работает как и задумывалось.

А имена свойств(узлы xml) заносятся через точку jdbcProvider.driver к примеру.

Следующая проблема, с которой довелось сталкнуться, это то что после настройки на новую бд с юзерами перестаёт работать админка и пользователь admin стаёт невалидным. Openfire пытается найти admin в новой бд. Меня ввело в заблуждение то что можно прописать пользователей, которыми можно логиниться в админку.

<admin> ... <authorizedUsernames>joe, jane</authorizedUsernames> Я прописал, но после перезапуска сервера эти пользователи не стали админами.

По каким то неведомым причинам openfire вобще отключает такую возможность, если в новой базе с юзерами нет пользователя admin.

Резюме:

1) Настройки нужно заносить напрямую в таблицу ofproperty

2) Пользователь admin должен полюбому присутствовать в бд с пользователями.

PS: странно что об этом нет ни слова в документации.

wnc_21
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.