メインコンテンツへスキップ
Auth0 は、その呼び出しがアプリケーションによって行われたことを Auth0 が確認できない場合、機密アプリケーションからの /passwordless/start エンドポイントの使用を非推奨とします。 では、シークレットを保存できるアプリケーションを「機密アプリケーション」と呼びます。Auth0 では、これはバックエンドアプリから Web ページを配信する「Regular Web Applications」を指します。シングルページアプリケーションと Native Applications は「public」アプリケーションと見なされるため、この変更の影響を受けません。 Auth0 は、client_secret をパラメーターに含める場合、または Classic Login のカスタムログインページから呼び出されて state パラメーターを引き継ぐ場合に、/passwordless/start への呼び出しを認証できます。

影響を受ける機能

現在、いずれかのアプリケーションが Web Application から認証を開始するために /passwordless/start エンドポイントを直接呼び出しており、client_secret をパラメーターとして送信していない場合、この非推奨化の影響を受けます。 Classic Login ページを通じてパスワードレス認証を実装していて、Auth0 ライブラリのデフォルトの初期化方法を変更している場合も、影響を受ける可能性があります。 影響を受けるかどうかは、テナントログ を確認し、“Deprecation Notice” で絞り込んだうえで、“Enforce client authentication for passwordless connections” というログがあるかを確認することで判断できます。次のクエリを使用して、この検索を直接実行することもできます: type:depnote AND description:*passwordless*。なお、このクエリは public cloud のテナントでのみ機能します。private cloud のログでは description フィールドを検索できないためです。

Actions

適切なアプリケーション認証を行わずに /passwordless/start エンドポイントを呼び出している場合は、次の対応を行ってください。
  • 以下の手順に従ってコードを調整し、/passwordless/start を正しく呼び出してください。
  • テナントログ を確認し、変更が正しく行われていること、および「Enforce client authentication for passwordless connections」に関する非推奨化ログが生成されていないことを確認してください。
  • Tenant SettingsAdvanced にある Migrations セクションで、Enforce client authentication for passwordless connections トグルをオンにします。
影響を受ける可能性のあるユースケースはいくつかありますが、いずれも移行手順は比較的シンプルです。

バックエンドからの API 呼び出し

バックエンドから /passwordless/start エンドポイントを呼び出す場合は、パラメーターとして を含める必要があります。 /passwordless/start に直接 POST リクエストを送信する場合は、client_secret をペイロードに含めます。 SDK を使用している場合は、パスワードレス フローを開始するメソッドにこのパラメーターを追加してください。必要な対応は SDK ごとに異なり、まだ更新されていない SDK もあります。使用している SDK が未更新の場合は、その対応が完了するまで HTTP 呼び出しを直接行えます。

Classic Login ページでの Auth0.js または Lock.js

Web アプリケーションのパスワードレス認証に Classic Login ページを使用している場合は、Lock.js または Auth0.js を使って /passwordless/start エンドポイントを呼び出します。 Web ページにクライアントシークレットを保存することはできないため、この呼び出しを認証するには、Classic Login ページで受け取った state パラメーターを /passwordless/start エンドポイントに転送します。このパラメーターは、カスタムログインページの config.internalOptions フィールドに保存されています。 ログインページをカスタマイズするためのデフォルトテンプレートでは、Lock.js または auth0.js の初期化時に、次のようにこれを使用します。
var lock = new Auth0Lock(
  config.clientID, 
  config.auth0Domain, 
  {
    auth: {
      // .. 他のフィールドを設定
      params: {
       scope: config.internalOptions.scope,
       _csrf: config.internalOptions._csrf,
       state: config.internalOptions.state,
      }
    }
  });
var params = Object.assign({
    scope: config.internalOptions.scope,
    _csrf: config.internalOptions._csrf,
    state: config.internalOptions.state,
  }, {
    // ...認証パラメータ
  });

var webAuth = new auth0.WebAuth(params);
カスタムページの実装を確認し、その code を削除していないことを確認してください。

Web アプリケーションのクライアントから /passwordless/start を呼び出す

通常の Web アプリケーションで、JavaScript を使用するページ (たとえばページ上で Auth0.js を使用する場合) から /passwordless/start エンドポイントを呼び出している場合、JavaScript による呼び出しではクライアントシークレットを指定できません。これに該当する場合は、/passwordless/start をフロントエンドではなく、Web アプリケーションのバックエンドから呼び出すようにアプリケーションを変更する必要があります。

レート制限

/passwordless/start にクライアント認証を追加すると、Auth0 はリクエストとともに送信されたヘッダーを信頼できるようになります。auth0-forwarded-for ヘッダーを設定すると、その IP アドレスはログに表示され、 のために使用されます。 認証された /passwordless/start リクエストは通常の認証済み API リクエストとして扱われ、対応する Authentication API のグローバルなレート制限が適用されます。