Umumnya, otentikasi dua faktor menggunakan sebuah one-time password (OTP) yang mengkombinasikan sesuatu yang diketahui oleh pengguna (nama pengguna dan kata kunci) dan sesuatu yang pengguna miliki (biasanya sebuah token atau key fob yang memproduksi enam digit angka yang valid untuk jangka waktu yang pendek dan tersedia sesuai permintaan).
Jika bisnis kamu sudah menggunakan otentikasi dua faktor, maka kamu pasti sudah mengetahui tentang masalah seputar kegunaan dan logistik token. Mengganti token yang hilang atau rusak dan pengguna salah mengetik one-time password mereka adalah dua hal yang memusingkan saat ini yang berimbas pada help desk dan departemen TI.
Intel Identity Protection Technology (Intel IPT) dengan OTP adalah sebuah built-in hardware token (dari pilihan vendor keamanan anda) yang meniadakan keperluan memisahkan token fisik terpisah sehingga menyederhanakan proses log-in VPN dua faktor agar tercipata pengalaman yang mulus tanpa penundaan secara virtual.
OTP memiliki 3 fungsionalitas utama: penyediaan OTP, pembuatan OTP, dan verifikasi OTP. Terdapat juga API untuk meng-query kapabilitas OTP dan versi OTP pada sistem.
Penyediaan OTP
InvokeIPTProv memperpanjang AsyncTask untuk mengeksekusi penyediaan pada latar. Pertama ia membuat layanan keamanan (Provision Service) dan lalu memulai prose penyediaan.
@Override protected Void doInBackground(Void... params) { ChaabiProvision prov = new ChaabiProvision(); try { prov.execute().get(PROV_MAX_TIMEOUT, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { error = "Provisioning failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); e.printStackTrace(); } catch (ExecutionException e) { error = "Provisioning failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); e.printStackTrace(); } catch (TimeoutException e) { error = "Provisioning failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); e.printStackTrace(); } return null; }
Pembuatan OTP
Sebelum kita mulai membuat OTP, kita perlu mengecek apakah perangkatnya sudah berhasil menyelesaikan proses penyediaan.
// Baca token jika ada if (!readData()) { tvOTPGenerate .setText("OTP generation failed: No token exists. Please do provisioning."); return; }
Lalu kita memanggil panggilan Async untuk membuat OTP.
boolean invokeResyncGenerateOTP(IPTWrapper obj) { try { // Kirim permintaan ke server untuk sync ulang pesan dan proses pesan yang didapat InvokeIPTResync ipt_obj = new InvokeIPTResync(); boolean status = ipt_obj.execute().get(); if (status) { // Proses pesan hasil sync ulang di server obj.ProcessResyncMessage(encrToken_b64, serverResyncMessage); // Panggil lagi pembuatan OTP // Cek jika token bertipe OCRA if (tokenInfo .equalsIgnoreCase(OTPDemoActivity.OCRA_TOKEN_INFO)) { invokeGenerateOTP(obj, true); } else { invokeGenerateOTP(obj, false); } displayOTP(); progressDialog.dismiss(); } else { String error = "Receive server resync message failed."; tvOTPGenerate.setText(error); progressDialog.dismiss(); OTPDemoActivity.OTP = null; return false; } } catch (IhaException e) { String error = "OTP generation failed. Message: " + e.getLocalizedMessage() + " Error code: " + e.GetError(); tvOTPGenerate.setText(error); progressDialog.dismiss(); OTPDemoActivity.OTP = null; return false; } catch (Exception e) { String error = "OTP generation failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); tvOTPGenerate.setText(error); progressDialog.dismiss(); OTPDemoActivity.OTP = null; return false; } return true; }
Verifikasi OTP
Setelah OTP dibuat, kita dapat mengecek apakah OTP-nya valid.
ChaabiOTPVerify otp_ver = new ChaabiOTPVerify(); try { otp_ver.execute() .get(OTP_VERIFY_TIMEOUT, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { error = "OTP verification failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); e.printStackTrace(); } catch (ExecutionException e) { error = "OTP verification failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); e.printStackTrace(); } catch (TimeoutException e) { error = "OTP verification failed: " + e.getClass().getName() + ": " + e.getLocalizedMessage(); e.printStackTrace(); } return null; } catch (JSONException e) { error = e.getClass().getName() + ": " + e.getLocalizedMessage(); status = false; e.printStackTrace(); } catch (UnsupportedEncodingException e) { error = e.getClass().getName() + ": " + e.getLocalizedMessage(); status = false; e.printStackTrace(); } catch (ClientProtocolException e) { error = e.getClass().getName() + ": " + e.getLocalizedMessage(); status = false; e.printStackTrace(); } catch (IOException e) { error = e.getClass().getName() + ": " + e.getLocalizedMessage(); status = false; e.printStackTrace(); } Log.v(LOG_TAG, "Return results: " + status); return status; }
Dengan mengimplementasikan kode seperti pada contoh di artikel ini, kamu dapat dengan cepat belajar bagaimana cara menggunakan Intel IPT dengan API one-time password untuk memanfaatkan OTP berbasis perangkat keras pada perangkat Android berbasis Intel.
Untuk contoh kode aplikasi pada artikel ini dapat diunduh dengan mengklik link ini.
* Artikel ini adalah hasil sindikasi konten dengan Intel Developer Zone. Artikel asli bisa dilihat di link ini.
Cisco mengungkapkan tiga kerentanan dalam layanannya. Ini dia penanganannya!
Ini ulasan mengenai keuntungan OptimalCloud Partner Platform, platform baru milik Optimal idM!
Google kenalkan dua koleksi baru dari Coral. Dua koleksi baru ini bakal menambah kemampuan pengembangan…
Raksasa Google baru saja mengembangkan sistem pemindaian kanker payudara berbasis kecerdasan buatan. Bagaimana hasilnya, berikut…
Meski dikenalkan bersamaan dengan Android 10 Beta, sampai kini Bubbles Notifications masih dalam tahap pengembangan.…
Samsung akan kembali memamerkan hasil program C-Lab ke ajang CES 2020. Ini dia proyek dan…