パスワードなしのログインによる顧客登録

B2C Commerce バージョン 26.1 以降では、パスワードなしのログインフローで顧客登録がサポートされます。認可リクエストで追加のパラメーターを渡し、時間ベースのワンタイムパスワード (TOTP) を検証することで、パスワードを必要とせずに B2C Commerce 顧客プロフィールを作成できます。

概要 

登録を伴うパスワードなしのログインの仕組みを理解するために、まずはプロセスの概要を見ていきます。

顧客登録を伴う SLAS のパスワードなしのログインフロー

  1. 買い物客がパスワードなしのログインをリクエストし、新規顧客として登録します。アプリは authorizePasswordlessCustomer エンドポイントを呼び出し、コールバック URI を指定します。
  2. SLAS は、買い物客の連絡先情報と 8 桁の TOTP を含む HTTP POST リクエストをコールバック URI に送信します。
  3. アプリは、E メール、SMS、またはその他のメカニズムで買い物客に TOTP を送信します。
  4. 買い物客は、リンクをクリックするか、TOTP を手動で入力してアプリに渡します。アプリは、getPasswordLessAccessToken エンドポイントを呼び出して買い物客を認証します。
  5. pwdless_login_token (TOTP) のまたは login_id + pwdless_login_token の検証が正常に完了すると、SLAS は新しい顧客プロフィールをリクエストします。
  6. B2C Commerce が新しい顧客プロフィールを作成します。
  7. SLAS は、アクセストークンとリフレッシュトークンを返します。アクセストークンは、買い物客に代わって認可されたリクエストを行うために使用できます。

登録を伴うパスワードなしのログインの構成 

顧客登録を伴うパスワードなしのログインを実装するには、最初に顧客を認可し、その後で TOTP を検証します。

1. 登録を伴うパスワードなしの顧客の認可 

register_customer クエリパラメーターを true に設定して、authorizePasswordlessCustomer エンドポイントを呼び出します。顧客登録の場合、リクエストボディには追加パラメーター email (user_id パラメーターですでに E メールが指定されている場合を除く) と last_name が必要です。phone_number パラメーターと first_name パラメーターはオプションですが、利用できる場合は指定することを推奨します。

1#!/bin/bash
2set -euo pipefail
3
4# Update these values with your configuration:
5CODE='qw1ert23'
6ORG='f_ecom_abcd_001'
7CLIENT='my-slas-private-client-id'
8SECRET='my-slas-private-client-secret'
9SITE='my-ecom-site'
10CALLBACK='https://www.example.com/my-callback-url?secret=open-sesame' LOGIN='testuser@salesforce.com'
11
12BASE="https://$CODE.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/$ORG"
13curl "$BASE/oauth2/passwordless/login?register_customer=true" \
14    --user "$CLIENT:$SECRET" \
15    --data "channel_id=$SITE" \
16    --data 'mode=callback' \
17    --data "callback_uri=$CALLBACK" \
18    --data-urlencode "login_id=$LOGIN" \
19    --data 'last_name=User' \
20    --data 'email=testuser@salesforce.com' \
21    --data 'first_name=Test' \
22    --data 'phone_number=+10001112222'

登録を伴わないパスワードなしのログインフローで説明したとおり、その後、SLAS は指定されたコールバック URI に HTTP POST リクエストを送信します。JSON ペイロードには、買い物客に送信できる TOTP が含まれます。

B2C Commerce の顧客プロフィールは、authorizePasswordlessCustomer の呼び出しでは作成されません。authorizePasswordlessCustomer エンドポイントを呼び出した後、登録を完了するには、コールバックから取得した TOTP をアクセストークンと交換します (手順 2)。

Important

2. TOTP の検証と顧客プロフィールの作成 

顧客を登録するには、[getPasswordLessAccessToken](https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-login?meta=getPasswordLessAccessToken) エンドポイントを呼び出します。この呼び出しは、TOTP をアクセストークンと交換します。

1curl --location 'https://$CODE.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/$ORG/oauth2/passwordless/token' \
2--header 'Content-Type: application/x-www-form-urlencoded' \
3--header 'Authorization: ••••••' \
4--data-urlencode 'grant_type=client_credentials' \
5--data-urlencode "login_id=$LOGIN" \
6--data-urlencode 'hint=pwdless_login' \
7--data-urlencode 'pwdless_login_token=12345678'

オプションの login_id パラメーターは、login_idpwdless_login_token (TOTP) の組み合わせを使用した、より強力な検証のために使用されます。

pwdless_login_token (TOTP) または login_id + pwdless_login_token の検証が正常に完了すると、SLAS は B2C Commerce で顧客プロフィールを作成するリクエストを送信します。B2C Commerce のレスポンスには、新しい顧客プロフィールが含まれます。その後、SLAS はアクセストークン (Shopper JWT) を作成します。