パスワードなしのログイン
パスワードなしのログインとは、パスワードを使わずに買い物客の本人確認を行う方法です。この方法により、フィッシングや総当たりパスワードクラッキングなどのサイバー攻撃から保護できます。パスワードなしのログインシステムでは、マジックリンク、ワンタイムコードなど、通常のパスワードよりセキュアな認証メソッドを採用しています。
このガイドでは、Shopper Login and API Access Service (SLAS) を使用して、Web サイトまたはアプリにパスワードなしのログインを実装する方法を学びます。
このページの一部のリンクにアクセスできるのは、既存のお客様のみです。Commerce Cloud リポジトリにアクセスする方法については、Salesforce Commerce Cloud GitHub リポジトリとアクセスを参照してください。
SLAS パスワードレス ログイン トークンは 10 分後に期限切れになります。
SLAS を使用したパスワードレスログインの仕組みを理解するために、プロセスの概要を見てみましょう。
買い物客は、既存の B2C Commerce またはサードパーティの IDP アカウントをもっている必要があり、パスワードレスログインを使用する前に、ユーザー名とパスワードでログインする必要があります。
- 買い物客がアプリを開いてログインします。
- 買い物客がパスワードなしのログインをリクエストします。
- アプリは authorizePasswordlessCustomer エンドポイントを呼び出し、コールバック URI を提供します。
- SLAS は、コールバック URI に対して HTTP POST リクエストを作成します (買い物客の連絡先情報と、買い物客の認証に使用できる 8 桁のパスワードなしのトークンを含む)。
- アプリは、E メール、SMS、または別のメカニズムを介して買い物客にパスワードなしのトークンを送信します。
- 買い物客は、リンクをクリックするか手動で入力することにより、パスワードなしのトークンをアプリに提供します。
- アプリは getPasswordLessAccessToken エンドポイントを呼び出して買い物客を認証し、SLAS アクセスおよびリフレッシュトークンを取得します。
- アクセストークンは、買い物客に代わって承認されたリクエストを行うために使用できます。
- B2C Commerce インスタンス、Managed Runtime 環境、独自のサーバーなど、公的にアクセス可能なコールバック URL。パブリックコールバック URL がない場合は、テスト目的で Webhook.site などのサービスを使用できます。
- E メールや SMS など、パスワードなしのトークンを買い物客に共有するメカニズム。
- パスワードなしのログインで動作するように構成された SLAS プライベートクライアント。
コールバック URL に推測できないクエリ文字列パラメーターなどのシークレット値を含めて、要求が SLAS Web サービスからのものであることを検証します。
SLAS プライベートクライアントをまだ作成していない場合は、Shopper API の認可の指示に従って作成してから、このガイドに戻ってください。パスワードなしのログインは、プライベートクライアントでのみ使用可能です。
パスワードなしのログインを使用できるようにプライベートクライアントを構成するには、SLAS Admin UI で以下の手順を実行します。
- 上部のナビゲーションで、Clients (クライアント) をクリックします。
- 以前に作成したクライアント ID の横にある Edit (編集) リンクをクリックします。
- 「Scopes」 (範囲) フィールドに、
sfcc.pwdless_login
を追加します。 - 「Callback URL」 (コールバック URL) フィールドには、先ほど用意したコールバック URI を入力します。
「Redirect URL」 (リダイレクト URL) フィールドとは異なり、「Callback URL」フィールドではワイルドカードを使用できません。コールバックには、プロトコルを含む完全な URL を常に含めてください。
www.example.com
でホストされているストアフロント用のパスワードなしのログインフローを構築しているとします。買い物客は、ユーザー名を入力し、E メールでパスワードなしのログインをリクエストすることでフローを開始します。
authorizePasswordlessCustomer エンドポイントをリクエストします。
user_id
パラメーターは買い物客の実際のログイン認証情報 profile.credentials.login
でなければなりません。ログイン認証情報は E メールアドレスでも可能ですが、profile.email
と同じであることは保証されません。
SLAS は、指定されたコールバック URI に対して HTTP POST リクエストを作成します。リクエストボディは JSON ペイロードです。
これには、顧客の E メールアドレスと電話番号の両方が含まれます。B2C Commerce システムでは、phone
の値が phoneMobile
の値に設定されます。phoneMobile
がない場合、SLAS は代わりに phoneHome
または phoneBusiness
の値を使用します。
token
の値は、買い物客に送信できるパスワードなしのトークンです。
コールバックでは、リクエストされた URL にシークレット値が存在することを検証する必要があります。
SLAS からコールバックを受信しない場合:
- コールバック URL が一般公開されていることを確認します。SLAS は localhost またはプライベート IP アドレスに到達できないため、パブリックにアクセス可能な URL を使用する必要があります。
- ファイアウォールで SLAS からの要求が許可されていることを確認します。URL からの
*.demandware.net
リクエストはブロックされます。 - コールバック URL が、サイトステータスが に設定された
Online (Protected)
B2C Commerce インスタンスの場合は、コールバックを取得するための保護が無効になっていることを確認します。
アプリは、パスワードなしのトークンを E メールまたは SMS で買い物客に送信します。
トークンは最大 10 分間有効です。トークンの有効期限が切れた場合は、パスワードなしのログインフローを再開する必要があります。
買い物客は、リンクをたどるか、手動でパスワードを入力して、パスワードなしのトークンをアプリに提供する必要があります。
getPasswordLessAccessToken エンドポイントにパスワードなしのトークンをアクセストークンと交換するようリクエストします。
これで、SLAS が返すアクセストークン (Shopper JWT) を使用して、Shopper API を呼び出せるようになりました!
Storefront Reference Architecture (SFRA) でパスワードなしのログインを使用するには、コミュニティで管理されている PasswordLess Login カートリッジを使用できます。