Bagikan melalui


Cara mendelegasikan registrasi pengguna dan langganan produk

BERLAKU UNTUK: Pengembang | Dasar | Dasar v2 | Standar | Standar v2 | Premium | Premium v2

Delegasi memungkinkan situs web Anda memiliki data pengguna dan melakukan validasi kustom untuk pengguna portal pengembang. Dengan delegasi, Anda dapat menangani masuk dan mendaftar pengembang (dan operasi manajemen akun terkait) dan langganan produk dengan menggunakan situs web yang ada, alih-alih fungsionalitas bawaan portal pengembang.

Mendelegasikan masuk dan pendaftaran pengembang

Untuk mendelegasikan opsi masuk, pendaftaran, dan manajemen akun pengembang ke situs web Anda yang sudah ada, buat titik akhir delegasi khusus di situs Anda. Delegasi khusus ini bertindak sebagai titik masuk untuk setiap masuk/daftar dan permintaan lain yang berkaitan yang dimulai dari portal pengembang API Management.

Alur kerja akhir terdiri dari langkah-langkah berikut:

  1. Pengembang mengklik tautan masuk atau pendaftaran atau tautan manajemen akun di portal pengembang API Management.
  2. Peramban mengalihkan ke titik akhir pendelegasian.
  3. Titik akhir delegasi kemudian mengarahkan pengguna ke UI masuk/daftar atau manajemen akun.
  4. Setelah operasi selesai, pengguna dialihkan kembali ke portal pengembang API Management di lokasi yang mereka tinggalkan.

Menyiapkan API Management untuk merutekan permintaan melalui titik akhir delegasi

  1. Di portal Microsoft Azure, buka instans API Management Anda.

  2. Di menu bilah samping, di bawah Portal pengembang, pilih Delegasi.

  3. Pilih kotak centang untuk Mengaktifkan delegasi.

  4. Pilih kotak centang untuk mengaktifkan Delegasi masuk & pendaftaran.

    Cuplikan layar memperlihatkan delegasi masuk dan mendaftar di portal.

  5. Pilih URL untuk titik akhir delegasi khusus Anda dan masukkan di bidang Titik akhir layanan delegasi .

  6. Pada Kunci delegasi:

    • Buat Kunci validasi utama atau Kunci validasi sekunder (atau keduanya) untuk digunakan oleh layanan delegasi Anda untuk memvalidasi permintaan dari API Management. Pilih elipsis (...) di samping salah satu kunci lalu pilih Regenerasi.
    • Pilih elipsis (...) di samping salah satu kunci lalu pilih Salin. Salin kunci ke lokasi yang aman, dan gunakan saat mengonfigurasi layanan delegasi Anda.
  7. Pilih Simpan.

Petunjuk / Saran

Anda dapat memutar dan meregenerasi kunci validasi delegasi kapan saja. Rotasi menggantikan kunci primer dengan kunci sekunder, dan meregenerasi kunci sekunder. Setelah menyimpan kunci, pastikan untuk memperbarui layanan delegasi Anda untuk menggunakan kunci baru.

Buat titik akhir delegasi Anda

Untuk membuat titik akhir delegasi baru untuk diterapkan di situs Anda, ikuti langkah-langkah berikut:

  1. Terima permintaan dalam bentuk berikut, bergantung pada operasinya:

    http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={URL halaman sumber}&salt={string}&sig={string}

    -Atau-

    http://www.yourwebsite.com/apimdelegation?operation={operation}& userId={ID pengguna akun}&salt={string}&sig={string}

    Parameter kueri:

    Pengaturan Deskripsi
    operasi Mengidentifikasi jenis permintaan delegasi. Operasi yang tersedia: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut.
    returnUrl Pada SignIn atau SignUp, URL tempat pengguna mengklik tautan masuk atau pendaftaran.
    userId Pada ChangePassword, ChangeProfile, CloseAccount, dan SignOut, ID pengguna akun yang ingin Anda kelola.
    garam String salt khusus yang digunakan untuk perhitungan hash keamanan.
    Sig Hash keamanan yang dihitung digunakan untuk perbandingan dengan hash yang Anda hitung sendiri.
  2. Verifikasikan apakah permintaan berasal dari Azure API Management (opsional, tetapi sangat direkomendasikan untuk keamanan).

    • Hitung hash HMAC-SHA512 dari sebuah string berdasarkan parameter kueri returnUrl (atau UserId) dan salt. Misalnya, periksa contoh kode kami.

      Untuk SignIn dan SignUp:

      HMAC(salt + '\n' + returnUrl)
      

      Untuk ChangePassword, ChangeProfile, CloseAccount, dan SignOut:

      HMAC(salt + '\n' + userId)
      
    • Bandingkan hash yang dihitung di atas dengan nilai parameter kueri sig. Jika kedua hash cocok, lanjutkan ke langkah berikutnya. Jika tidak, tolak permintaan.

  3. Verifikasi bahwa Anda menerima permintaan untuk masuk/mendaftar atau operasi manajemen akun.

  4. Sajikan pengguna dengan UI masuk/daftar atau manajemen akun.

  5. Setelah menyelesaikan operasi di sisi Anda, kelola pengguna di API Management. Misalnya, jika pengguna mendaftar, buat akun yang sesuai untuk mereka di API Management.

    • Buat pengguna dengan API Management REST API.
    • Atur ID pengguna ke nilai yang sama di toko pengguna Anda atau ID baru yang mudah dilacak.
  6. Setelah masuk atau mendaftar, saat pengguna berhasil diautentikasi:

    • Meminta token akses bersama melalui API Management REST API.

    • Tambahkan parameter kueri returnUrl ke URL SSO yang telah Anda terima dari panggilan API di atas. Contohnya:

      https://contoso.developer.azure-api.net/signin-sso?token=<URL-encoded token>&returnUrl=%2Freturn%2Furl

    • Mengalihkan pengguna ke URL yang diproduksi di atas.

Mendelegasikan langganan produk

Mendelegasikan langganan produk dilakukan dengan cara yang sama seperti mendelegasikan login/registrasi pengguna. Alur kerja akhir terdiri dari langkah-langkah berikut:

  1. Pengembang memilih produk di portal pengembang API Management dan memilih tombol Berlangganan .
  2. Peramban mengalihkan ke titik akhir pendelegasian.
  3. Titik akhir delegasi melakukan langkah-langkah langganan produk yang diperlukan, yang Anda desain. Langkah-langkah ini dapat mencakup:
    • Mengarahkan ke halaman lain untuk meminta informasi penagihan.
    • Mengajukan pertanyaan lebih lanjut.
    • Menyimpan informasi dan tidak memerlukan tindakan pengguna.

Mengaktifkan fungsionalitas API Management

Pada halaman Delegasi , pilih kotak centang untuk Mengaktifkan delegasi, lalu aktifkan Delegasikan langganan produk.

Buat titik akhir delegasi Anda

Untuk membuat titik akhir delegasi baru untuk situs Anda, ikuti langkah-langkah ini:

  1. Terima permintaan dalam formulir berikut, tergantung pada operasi.

    http://www.yourwebsite.com/apimdelegation?operation={operation}&p roductId={product to subscribe to}&userId={user making request}&salt={string}&sig={string}

    -Atau-

    http://www.yourwebsite.com/apimdelegation?operation={operation}& subscriptionId={langganan yang akan dikelola}&salt={string}&sig={string}

    Parameter kueri:

    Pengaturan Deskripsi
    operasi Mengidentifikasi jenis permintaan delegasi. Opsi permintaan langganan produk yang valid adalah:
    • Berlangganan: permintaan untuk berlangganan pengguna ke produk tertentu dengan ID yang disediakan (lihat di bawah).
    • Berhenti berlangganan: permintaan untuk berhenti berlangganan pengguna dari produk
    productId Pada Langganan, ID produk yang diminta pengguna untuk berlangganan.
    userId Pada Langganan, ID pengguna yang meminta permohonan.
    subscriptionId Pada Berhenti berlangganan, ID langganan produk.
    garam String salt khusus yang digunakan untuk perhitungan hash keamanan.
    Sig Hash keamanan yang dihitung digunakan untuk perbandingan dengan hash yang Anda hitung sendiri.
  2. Verifikasi bahwa permintaan berasal dari Azure API Management (opsional, tetapi sangat direkomendasikan untuk keamanan).

    • Hitung HMAC-SHA512 dari string berdasarkan productId dan userId (atau subscriptionId) dan parameter kueri salt:

      Untuk Berlangganan:

      HMAC(salt + '\n' + productId + '\n' + userId)
      

      Untuk Berhenti berlangganan:

      HMAC(salt + '\n' + subscriptionId)
      
    • Bandingkan hash yang dihitung di atas dengan nilai parameter kueri sig. Jika kedua hash cocok, pindah ke langkah berikutnya. Jika tidak, tolak permintaan.

  3. Memproses langganan produk berdasarkan jenis operasi yang diminta dalam operasi - (misal: penagihan, pertanyaan lanjutan, dll.).

  4. Setelah menyelesaikan operasi di sisi Anda, kelola langganan di API Management. Misalnya, berlangganan pengguna ke produk API Management dengan memanggil REST API untuk langganan.

Contoh kode

Sampel kode ini menunjukkan cara menghasilkan hash returnUrl parameter kueri saat mendelegasikan masuk atau mendaftar pengguna. returnUrl adalah URL halaman tempat pengguna mengklik tautan masuk atau mendaftar.

  • Ambil kunci validasi delegasi, yang Anda tetapkan di layar Delegasi portal Microsoft Azure.
  • Buat HMAC, yang memvalidasi tanda tangan digital dan membuktikan validitas elemen yang diteruskan returnUrl.

Dengan sedikit modifikasi, Anda dapat menggunakan kode yang sama untuk menghitung hash lain, seperti dengan productId dan userId saat mendelegasikan langganan produk.

Kode C# untuk menghasilkan hash dari returnUrl

using System.Security.Cryptography;

string key = "delegation validation key";
string returnUrl = "returnUrl query parameter";
string salt = "salt query parameter";
string signature;
using (var encoder = new HMACSHA512(Convert.FromBase64String(key)))
{
    signature = Convert.ToBase64String(encoder.ComputeHash(Encoding.UTF8.GetBytes(salt + "\n" + returnUrl)));
    // change to (salt + "\n" + productId + "\n" + userId) when delegating product subscription
    // compare signature to sig query parameter
}

kode Node.js untuk menghasilkan hash dari returnUrl

var crypto = require('crypto');

var key = 'delegation validation key'; 
var returnUrl = 'returnUrl query parameter';
var salt = 'salt query parameter';

var hmac = crypto.createHmac('sha512', new Buffer(key, 'base64'));
var digest = hmac.update(salt + '\n' + returnUrl).digest();
// change to (salt + "\n" + productId + "\n" + userId) when delegating product subscription
// compare signature to sig query parameter

var signature = digest.toString('base64');

Penting

Anda perlu menerbitkan ulang portal pengembang agar perubahan delegasi dapat diterapkan.