sqlauth:SQL

Untuk contoh sumber autentifikasi yang menggunakan modul sqlauth:SQL, kita menggunakan skema database yang digunakan oleh FOSUserBundle pada symfony2 framework, sebuah aplikasi sederhana telah dibuat, NPProfile [1]

Yang sangat perlu kita ketahui adalah, bagaimana FOSUserBundle mengenkripsi password yang tersimpan dalam database ?

Setelah membaca [2] dan [3] , secara default mekanisme penyimpanan password pasa FOSUserBundle adalah sebagai berikut :

    1. Menyatukan password dan salt, dengan format $password.'{'.$salt.'}'

    2. Di hash dengan algoritma sh512, kemudian diiterasi sebanyak 5000 kali

    3. Encode dengan base64_code

Kalau ketiga langkah tersebut dilakukan, maka passwordnya akan didapat.

Tinggal tambahkan fungsi berikut di modules/sqlauth/lib/Auth/Source/SQL.php

protected function symfony2PasswordEncoder($salt,$password) {

$salted = $password.'{'.$salt.'}' ;

$digest = hash('sha512',$salted,true) ;


for($i=1;$i<5000;$i++) {

$digest = hash("sha512", $digest.$salted, true);

}


$result = base64_encode($digest) ;


return $result ;

}

Kemudian gunakan fungsi ini pada bagian fungsi login().

Selesai.

Catatan : Ada baiknya membuat module sumber autentifikasi yang baru agar module sqlauth:SQL dapat digunakan seperti biasanya.

Referensi