Cara mendelegasikan registrasi pengguna dan langganan produk

BERLAKU UNTUK: Pengembang | Dasar | Standar | Premium

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

Mendelegasikan rincian masuk dan pendaftaran pengembang

Untuk mendelegasikan opsi masuk dan pendaftaran dan manajemen akun pengembang 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 rincian masuk/pendaftaran dan permintaan terkait yang dimulai dari portal pengembang API Management.

Alur kerja akhir adalah:

  1. Pengembang mengklik tautan masuk atau pendaftaran atau tautan manajemen akun di portal pengembang API Management.
  2. Browser mengalihkan ke titik akhir delegasi.
  3. Titik akhir delegasi dalam pengembalian mengalihkan pengguna ke atau menyajikan pengguna dengan 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, cari portal Pengembang di sumber daya API Management Anda.

  2. Klik item Delegasi.

  3. Klik kotak centang untuk mengaktifkan Delegasi masuk & daftar.

    Cuplikan layar memperlihatkan delegasi masuk dan mendaftar di portal.

  4. Tentukan URL titik akhir delegasi khusus Anda dan masukkan di bidang URL titik akhir delegasi.

  5. Dalam bidang Kunci Validasi Delegasi, lakukan salah satu hal berikut:

    • Masukkan rahasia yang digunakan untuk menghitung tanda tangan yang disediakan untuk verifikasi bahwa permintaan berasal dari API Management.
    • Klik tombol Buat agar API Management dapat membuat kunci acak untuk Anda.
  6. Klik Simpan.

Buat titik akhir delegasi Anda

Langkah-langkah yang direkomendasikan untuk membuat titik akhir delegasi baru untuk diterapkan di situs Anda:

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

    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:

    Parameter 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 komputasi hash keamanan.
    sig Hash keamanan komputasi yang akan digunakan untuk perbandingan dengan hash komputasi Anda sendiri.
  2. Verifikasikan apakah permintaan berasal dari Azure API Management (opsional, tetapi sangat direkomendasikan untuk keamanan).

    • Komputasi hash HMAC-SHA512 dari 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 yang berfungsi sama dengan mendelegasikan masuk/daftar pengguna. Alur kerja terakhir adalah sebagai berikut:

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

Mengaktifkan fungsionalitas API Management

Pada halaman Delegasi, klik Delegasikan langganan produk.

Buat titik akhir delegasi Anda

Langkah-langkah yang direkomendasikan untuk membuat titik akhir delegasi baru untuk diterapkan di situs Anda:

  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={subscription to manage}&salt={string}&sig={string}

    Parameter kueri:

    Parameter 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 digunakan pengguna untuk meminta berlangganan.
    userId Pada Langganan, ID pengguna yang meminta.
    subscriptionId Pada Berhenti berlangganan, ID langganan produk.
    Garam String salt khusus yang digunakan untuk komputasi hash keamanan.
    sig Hash keamanan komputasi yang akan digunakan untuk perbandingan dengan hash komputasi Anda sendiri.
  2. Verifikasikan jika permintaan berasal dari Azure API Management (opsional, tetapi sangat direkomendasikan untuk keamanan)

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

      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, lanjutkan 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 pendaftaran.

  • Ambil kunci validasi delegasi, yang diatur dalam layar Delegasi dari portal Azure.
  • Buat HMAC, yang kemudian digunakan untuk memvalidasi tanda tangan yang membuktikan validitas returnUrl yang diteruskan.

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 NodeJS 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.

Langkah berikutnya