JackMR Opublikowano 25 Lutego 2014 Udostępnij Opublikowano 25 Lutego 2014 Witajcie, Chcąc "rozszerzyć" moje community o nowe funkcje zainstalowałem na dedyku OpenFire http://www.igniterealtime.org/projects/openfire/index.jsp OpenFire jest to serwer instant messagging który może posługiwać się zewnętrzną bazą danych w celu autentykacji użytkownika (read-only). Konfiguracja odbywa się w ten sposób: <jive> ... <provider> <auth> <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className> </auth> <user> <className>org.jivesoftware.openfire.user.JDBCUserProvider</className> </user> </provider> <jdbcAuthProvider> <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL> <passwordType>plain</passwordType> </jdbcAuthProvider> <jdbcUserProvider> <loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL> <userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL> <allUsersSQL>SELECT username FROM myUser</allUsersSQL> <searchSQL>SELECT username FROM myUser WHERE</searchSQL> <usernameField>username</usernameField> <nameField>name</nameField> <emailField>email</emailField> </jdbcUserProvider> ... </jive> Oczywiście jest to tylko przykład a mój problem polega na ułożeniu w odpowiedni sposób zapytań do bazy IPB 3.4.6 1. hasło: SELECT password FROM user_account WHERE username=?2. typ hasła (pewnie będzie md5) 3. user: SELECT name,email FROM myUser WHERE username=?4. user count: SELECT COUNT(*) FROM myUser5. wyszukiwanie usera: SELECT username FROM myUser6. wyszukiwanie: SELECT username FROM myUser WHERE Poczytałem trochę http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-integration-guide.html ale jak wiadomo IPB nie trzyma hasel w plain text tylko: IP.Board stores members' passwords as a salted hash. Both the hash and the salt are stored in the database in the members table as members_pass_hash and members_pass_salt, respectively.The hash is the md5 sum of the md5 sum of the salt concatenated to the md5 sum of the plaintext password. Expressed in PHP code, this is as follows: $hash = md5( md5( $salt ) . md5( $password ) ); Where: $hash is the value stored in the database column members_pass_hash. $salt is the value stored in the database column members_pass_salt. $password is the plaintext password. Gdyby to był plain text to pewnie byłoby to proste: <passwordSQL>SELECT members_pass_hash FROM members WHERE members_l_username=?</passwordSQL> ale nie wiem jak złożyć takie zapytanie biorąc pod uwagę sposób w jaki przechowuje hasła IPB. Doradzicie jak napisać te zapytania ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
JamLasica Opublikowano 25 Lutego 2014 Udostępnij Opublikowano 25 Lutego 2014 (edytowane) Pytasz "w złym miejscu" - próbujesz zintegrować OpenFire z już gotową bazą, która w specyficzny sposób trzyma skróty/hasze haseł - to OpenFire musi obsłużyć odpowiednią funcję, aby z hasła, które dostanie od klienta XMPP zrobić ten magiczny, potrójny md5. Z samej, czystej bazy IP.Boarda nie dostaniesz 'czystego' hasła - ani w md5 ani w sha1 ani w plain-texcie Tak na szybko przeglądając nie widzę tam w konfiguracji jakiejś takiej możliwości, ale zawsze możesz poprawić źródła ;-) http://community.igniterealtime.org/message/221182#221182 http://community.igniterealtime.org/thread/35365 http://community.igniterealtime.org/message/228281#228281 Edytowane 25 Lutego 2014 przez JamLasica 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Macsch15 Opublikowano 25 Lutego 2014 Udostępnij Opublikowano 25 Lutego 2014 Musisz dostosować hasła do "standardu" IPB. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się