Help
Secara umum, hampir setiap pemanggilan web-service, harus dicantumkan beberapa variabel yang dibutuhkan untuk menambahkan informasi ataupun untuk proses validasi yang dikirim pada HTTP Header, antara lain:
# | Nama Header | Nilai | Keterangan |
---|---|---|---|
1 | X-cons-id | 123456789 | create consumer ID |
2 | X-timestamp | 123123123 | generated unix-based timestamp |
3 | X-signature | DogC5UiQurNcigrBdQ3QN5djfjfhjUDodjhDHDF9v0= | generated signature dengan pola HMAC-256 |
1. X-cons-id, merupakan kode consumer (pengakses web-service).
2. X-timestamp, merupakan waktu yang akan di-generate oleh client saat ingin memanggil setiap service. Format waktu ini ditulis dengan format unix-based-time (berisi angka, tidak dalam format tanggal sebagaimana mestinya). Format waktu menggunakan Coordinated Universal Time ( UTC), dalam penggunaannya untuk mendapatkan timestamp, rumus yang digunakan adalah (local time in UTC timezone in seconds) - (1970-01-01 in seconds).
3. X-signature, merupakan hasil dari pembuatan signature yang dibuat oleh client. Signature yang digunakan menggunakan pola HMAC-SHA256.
Untuk dapat mengakses web-service , pemanggil web service (Android MyQIM) akan mendapatkan:
• Consumer ID
• Consumer Secret
Informasi Consumer Secret, hanya disimpan oleh service consumer. Tidak dikirim ke server web-service, hal ini untuk menjaga pengamanan yang lebih baik. Sedangkan kebutuhan Consumer Secret ini adalah untuk men-generate Signature (X-signature).
Contoh:
consumerID : 123456789
consumerSecret : password
timestamp : 123123123
variabel1 : consumerID×tamp
variabel1 : 123456789&123123123
SIGNATURE
Metode signature yang digunakan adalah menggunakan HMAC-SHA256, dimana paramater saat generate signature dibutuhkan parameter message dan key.
Berikut contoh hasil generate HMAC-SHA256
message : aaa
key : bbb
hasil generate HMAC-SHA256 : 20BKS3PWnD3XU4JbSSZvVlGi2WWnDa8Sv9uHJ+wsELA=
Diatas adalah hasil generate dari server MyQIM
Signature : HMAC-256(value : key)
value : variabel1
key : consumerSecret
Signature : HMAC-256(variabel1 : consumerSecret)