Categories: Intel Developer Zone

Contoh Aplikasi One-Time Password (OTP)

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.

Kode dan Penjelasan

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;
}

Kesimpulan

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.

Share
Published by
Faisal Ramadoni

Recent Posts

Cisco Peringkatkan Kerentanan Kritis Dalam Cisco Data Center Network Manager

Cisco mengungkapkan tiga kerentanan dalam layanannya. Ini dia penanganannya!

January 7, 2020

Optimal idM Meluncurkan OptimalCloud Partner Platform

Ini ulasan mengenai keuntungan OptimalCloud Partner Platform, platform baru milik Optimal idM!

January 6, 2020

Google Siapkan Coral Accelerator Module dan Coral Dev Board Mini untuk Tahun 2020

Google kenalkan dua koleksi baru dari Coral. Dua koleksi baru ini bakal menambah kemampuan pengembangan…

January 3, 2020

Google Kembangkan Model Kecerdasan Buatan Untuk Deteksi Kanker Payudara

Raksasa Google baru saja mengembangkan sistem pemindaian kanker payudara berbasis kecerdasan buatan. Bagaimana hasilnya, berikut…

January 3, 2020

Google Dorong Fitur Bubbles Notifications Ke Versi Stabil

Meski dikenalkan bersamaan dengan Android 10 Beta, sampai kini Bubbles Notifications masih dalam tahap pengembangan.…

December 31, 2019

Samsung Siapkan Lima Proyek dan Empat Startup C-Lab Untuk CES 2020

Samsung akan kembali memamerkan hasil program C-Lab ke ajang CES 2020. Ini dia proyek dan…

December 30, 2019