Rumah >hujung hadapan web >tutorial js >Javascript: Melaksanakan Log Masuk Tanpa Kata Laluan dengan Salesforce

Javascript: Melaksanakan Log Masuk Tanpa Kata Laluan dengan Salesforce

Susan Sarandon
Susan Sarandonasal
2024-12-14 12:54:16453semak imbas

Javascript: Implementing Passwordless Login with Salesforce

Salesforce menawarkan Aliran Log Masuk Tanpa Kata Laluan Tanpa Kepala yang membolehkan pengguna berdaftar mengakses aplikasi dengan lancar. Log masuk tanpa kata laluan sangat mesra pengguna, yang diperlukan hanyalah alamat e-mel yang aktif. Dalam siaran ini, saya akan berkongsi beberapa coretan kod untuk melaksanakan aliran log masuk Tanpa Kata Laluan dengan Salesforce.

Keperluan

Sebelum kita mula, pastikan perkara berikut:

a) Anda mempunyai akses kepada persekitaran Salesforce.

b) Anda telah mendaftarkan pengguna dan mendayakan pilihan log masuk Tanpa Kata Laluan.

Langkah Pertama: Hantar Nama Pengguna

export async function passwordlessLogin(username, captcha) {
  const payload = {
    username,
    recaptcha: captcha,
    verificationmethod: "email",
  };
  const config = {
    headers: {
      "Content-Type": "application/json",
    },
    method: "POST",
    body: JSON.stringify(payload),
  };
  const url = `${REPLACE_WITH_YOUR_SALESFORCE_CLOUD_URL}/services/auth/headless/init/passwordless/login`;

  const response = await fetch(url, config);

  const result = await response.json();

  return result;
}

Ini adalah panggilan pertama kepada Salesforce. Ambil perhatian perkara berikut:

a) Anda perlu melepasi captcha. Untuk mendapatkan bantuan, lihat ReCAPTCHA v3.

b) Kaedah pengesahan ditetapkan kepada e-mel, yang memberitahu Salesforce untuk menghantar kata laluan sekali sahaja (OTP) melalui e-mel.

c) Bersama-sama dengan captcha dan kaedah pengesahan, satu-satunya parameter lain yang diperlukan ialah nama pengguna, yang sepadan dengan e-mel yang didaftarkan untuk pengguna.

Sekiranya permintaan berjaya, Salesforce akan menghantar e-mel kepada nama pengguna yang diberikan dan mengembalikan respons seperti ini:

{
  "identifier": "MFF0RWswMDAwMDIxdVRk",
  "status": "success"
}

Langkah kedua: Tangkap OTP

export async function passwordlessAuthorize(identifier, code) {
  const Authorization = btoa(identifier + ":" + code);

  const config = {
    headers: {
      "Auth-Request-Type": "passwordless-login",
      "Auth-Verification-Type": "email",
      Authorization: "Basic " + Authorization,
      "Content-Type": "application/x-www-form-urlencoded",
    },
    method: "POST",
    body: new URLSearchParams({
      response_type: "code_credentials",
      client_id: "REPLACE_WITH_YOUR_CLIENT_ID",
      redirect_uri: "REPLACE_WITH_YOUR_REDIRECT_URI",
    }),
  };
  const response = await fetch(
    `${REPLACE_WITH_YOUR_SALESFORCE_CLOUD_URL}/services/oauth2/authorize`,
    config
  );

  const result = await response.json();

  return result;
}

Ini adalah panggilan kedua kepada Salesforce. Berikut ialah beberapa perkara penting:

a) Pengecam ialah nilai yang dikembalikan daripada langkah satu.

b) Kod tersebut ialah OTP yang Salesforce hantar melalui e-mel.

c) Beri perhatian kepada cara pengepala Pengesahan dan Kebenaran ditakrifkan.

d) Jenis Kandungan adalah aplikasi/x-www-form-urlencoded. Perhatikan cara badan menggunakan URLSearchParams untuk pemformatan.

Jika semuanya berjalan lancar, Salesforce akan mengembalikan respons seperti ini:

{
  "code": "aPrxOPPU1bwu2d3SbsSBKLUbZop4sxhra2Tb.p3LApgVIexVmwyIGVaF6vTebI7ottVto18uuQ==",
  "sfdc_community_url": "https://site.com/application",
  "sfdc_community_id": "xxxxxxxx"
}

Langkah Tiga: Kod Pertukaran untuk Token Akses

Langkah terakhir ialah menukar kod dari langkah sebelumnya untuk Token Akses. Token Akses adalah penting kerana ia membolehkan anda membuat permintaan bagi pihak pengguna. Kehadiran Token Akses membolehkan sesi pengguna.

export async function getAccessToken(code) {
  const config = {
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
    method: "POST",
    body: new URLSearchParams({
      code,
      grant_type: "authorization_code",
      client_id: "REPLACE_WITH_YOUR_CLIENT_ID",
      redirect_uri: "REPLACE_WITH_YOUR_REDIRECT_URI",
    }),
  };

  const response = await fetch(
    `${REPLACE_WITH_YOUR_SALESFORCE_CLOUD_URL}/services/oauth2/token`,
    config
  );

  const result = await response.json();

  return result;
}

Respons sepatutnya kelihatan seperti ini:

{
  "access_token": "00DEj000006DHsR!AQEAQGpj5XvnBl1QQ8PI4XjygHmXAJiG7CA4Ci0mIxZcg7hO_YYZanyXPX9uelAez2905VFnE6VzhmavmnDoBOks.wzhlZHc",
  "refresh_token": "5Aep861i1Ns2kInCGgjSdz4OOTyJzqw_gZDs5f1PwqH0NfU0AKgLDAw5ptc.qADf.bVZ1aPlUKjyISe2lxx5KQ0",
  "sfdc_community_url": "https://site.com/application",
  "sfdc_community_id": "xxxxxxxx",
  "signature": "jwnfZY2G3phxCl3fJrfJu5X2AyxW7Ozsfg2BZ6bBB74=",
  "scope": "refresh_token openid user_registration_api api",
  "id_token": "...",
  "instance_url": "https://site.com/",
  "id": "https://test.salesforce.com/id/00000/11111",
  "token_type": "Bearer",
  "issued_at": "1733700157803"
}

Pastikan anda menyimpan token_akses dengan selamat, dan dari sini, anda boleh membuat sesi untuk pengguna anda. Atas sebab keselamatan, sebaiknya laksanakan kaedah ini pada pelayan.

id_token ialah token JWT. Jika anda menyahkodnya, ia akan kelihatan seperti ini:

{
  "at_hash": "HTa4VEmQhCYi59WLhiL6DQ",
  "sub": "https://test.salesforce.com/id/00000/11111",
  "aud": "3MXG9j6uMOMC1DNjcltNj9xPoUi7xNbiSwPqOjmDSLfCW54f_Qf6EG3EKqUAGT6xyGPc7jqAMi4ZRw8WTIf9B",
  "iss": "https://site.com/",
  "exp": 1733702662,
  "iat": 1733702542
}

Anda juga boleh menyesuaikan JWT untuk memasukkan data tambahan. Walau bagaimanapun, adalah disyorkan untuk memastikan struktur minimum dan menggunakan Token Akses untuk mengambil maklumat tambahan seperti yang diperlukan.

Kesimpulan

Log masuk tanpa kata laluan adalah mudah untuk semua orang, dan kebanyakan perkhidmatan awan, seperti Salesforce, kini menawarkan Aliran Log Masuk Tanpa Kata Laluan. Manfaatkan ciri ini untuk memudahkan proses log masuk dan meningkatkan pengalaman pengguna.

Atas ialah kandungan terperinci Javascript: Melaksanakan Log Masuk Tanpa Kata Laluan dengan Salesforce. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn