Dokumentasi API

Migrasi dari Duo

Pindah dari Auth API Duo ke WiraPass: yang perlu diganti, yang didukung, dan yang tidak.

Halaman Dokumentasi

Sistem yang sekarang memakai Auth API v2 milik Duo cukup mengganti tiga nilai. Kode dan pustaka resmi Duo tetap sama.

Yang Perlu Diganti

NilaiDuoWiraPass
Hostname APIapi-xxxxxxxx.duosecurity.comauth.wiracode.com
Integration keydari Duo Admin Paneldari operator WiraPass (caranya)
Secret keydari Duo Admin Paneldari operator WiraPass
Python (duo_client)
# Before (Duo)
auth = duo_client.Auth(ikey="DIXXXXXXXXXXXXXXXXXX", skey="duo-secret", host="api-xxxxxxxx.duosecurity.com")

# After (WiraPass): the same code, three new values
auth = duo_client.Auth(ikey="DIYYYYYYYYYYYYYYYYYY", skey="wirapass-secret", host="auth.wiracode.com")

Nama Pengguna Adalah Email

WiraPass mengenal pengguna dari email yang ia pakai untuk masuk ke aplikasi WiraPass. Kirim email itu sebagai username. Bila username di sistem Anda bukan email, petakan dulu ke email pengguna. Nilai user_id adalah ID pengguna WiraPass (UUID), bukan ID dari Duo.

Yang Didukung

  • Endpoint /auth/v2/ping, /auth/v2/check, /auth/v2/logo, /auth/v2/enroll, /auth/v2/enroll_status, /auth/v2/preauth, /auth/v2/auth, /auth/v2/auth_status.
  • Factor auto, push (persetujuan WiraPass), dan passcode (kode cadangan WiraPass), dengan atau tanpa async.
  • Tanda tangan versi 5, 4, dan 2 (HMAC-SHA512 atau HMAC-SHA1), badan JSON atau form, dan header X-Duo-*.
  • Format jawaban Duo, kode kesalahan Duo, dan nilai status allow, deny, fraud, timeout, locked_out, pushed.
  • type, display_username, pushinfo, ipaddr, hostname tampil di HP pengguna.

Yang Tidak Didukung

  • SMS (factor=sms) dan panggilan telepon (factor=phone): ditolak dengan 40002 dan pesan yang jelas.
  • Duo Universal Prompt dan alur web OIDC (/oauth/v1/…), serta Web SDK v2 yang lama.
  • Bypass code dan hardware token. Parameter bypass_codes pada enroll diabaikan.
  • Verified Duo Push dan Remembered Devices: client_supports_verified_push dan trusted_device_token diterima tetapi diabaikan, dan preauth tidak pernah menjawab allow.
  • Admin API, Accounts API, dan tanda tangan versi 1.

Passcode Adalah Kode Cadangan WiraPass

Pengguna membuka aplikasi WiraPass, lalu Setelan, Persetujuan, Kode cadangan. Kodenya 6 digit, berganti setiap 30 detik, dan setiap kode hanya bisa dipakai sekali. Kirim kode itu sebagai passcode dengan factor=passcode.

  • mobile_otp pada preauth hanya muncul bila pengguna sudah punya kode cadangan.
  • Paling banyak 5 pemeriksaan per 5 menit per pengguna, setelah itu 42901.
  • Setelah 10 kode salah berturut-turut, kode terkunci dan jawabannya status=locked_out. Pengguna membuat kode baru dari HP yang aktif.

Pendaftaran Pengguna

Tidak ada aktivasi Duo Mobile. Pengguna memasang WiraPass, masuk dengan email yang sama, lalu mengaktifkan persetujuan. Endpoint enroll memberi alamat halaman unduhan dan kode QR-nya, dan enroll_status menjawab success begitu email itu punya HP penyetuju yang aktif. Di WiraPass, username wajib diisi pada enroll. Kolom enroll_portal_url pada preauth juga menunjuk ke halaman unduhan.

Perbedaan Kecil Lainnya

  • Push tampil di semua HP penyetuju pengguna yang sedang masuk ke WiraPass. device boleh berisi auto atau id HP dari preauth.
  • Bila tidak ada HP yang sedang masuk, push dijawab deny tanpa mengirim apa pun, dan status_msg menyarankan kode cadangan.
  • Setelah Bukan saya, preauth menjawab deny dan push ditolak selama 15 menit untuk integrasi itu.
  • status_msg berbahasa Indonesia, kecuali Anda mengirim Accept-Language: en. number pada devices selalu kosong.
  • txid berupa UUID, dan auth_status menunggu paling lama 8 detik per panggilan. Batas lainnya.

Sertifikat TLS dan CA Pinning

Pustaka resmi Duo secara bawaan hanya memercayai daftar root CA miliknya sendiri (CA pinning). Bila pustaka Anda menolak sertifikat WiraPass, misalnya dengan CERTIFICATE_VERIFY_FAILED, matikan pinning dengan opsi di bawah. Pemeriksaan sertifikat TLS biasa tetap berjalan dengan daftar CA sistem.

PustakaOpsi
duo_client (Python)duo_client.Auth(..., disable_ca_pinning=True)
@duosecurity/duo_api (Node.js)new Client(ikey, skey, host, 5, false)
duo_api_php$auth->disableCaPinning()
duo_api_golangduoapi.NewDuoApi(ikey, skey, host, ua, duoapi.SetCAPinning(false))
duo-client (Java)new Http.HttpBuilder(...).disableCaPinning().build()

Duo adalah merek dagang Cisco. WiraPass tidak berafiliasi dengan Duo maupun Cisco dan hanya menawarkan kompatibilitas API.