Auth0は、基本的なSMS認証に対応していません。
- SMSパスワードレス接続をセットアップします。方法については、パスワードレス接続の「パスワードレスの実装」セクションをご覧ください。
- Management APIのアクセストークンを取得します。これは、パスワードレス接続を更新するために、Mangement APIを呼び出すために必要です。
- GET接続エンドポイントを使用して、テナントに関する接続についての情報を取得します。より具体的には、パスワードレスSMS接続のIDを取得する必要があります。そうすることで、接続自体を更新する後のAPI呼び出しでそれを使用できます。Management APIに以下の呼び出しを行う前に、
ACCESS_TOKEN
を手順1で取得したトークンに置き換えてください。
"name": "sms"
プロパティを検索できます。接続で、セットアッププロセス中にあなたが提供したTwilio情報が現在表示されていることに注目してください。
-
接続を更新する。接続の更新エンドポイントに対してPATCH呼び出しを行うことで、これを実行できます。より具体的には、SMS Gatewayに関する情報を提供するために、接続
options
オブジェクトを更新します。以下の項目を変更します。呼び出しのたびにoptions
オブジェクト全体を送信しなければなりません。そうしないと、後続の呼び出しに含まれない既存のデータが上書きされます。twilio_sid
およびtwilio_token
の両方のパラメーターを削除します。provider
パラメーターを追加し、sms_gateway
に設定します。gateway_url
パラメーターを追加し、SMSゲートウェイのURLに設定します。Auth0は、ゲートウェイを使用してあなたに代わってメッセージを送信するために、このURLに到達できなければなりません。
認証済み要求
SMSゲートウェイが、トークンベースの認証済み要求を受け入れたら、options
オブジェクトに以下を追加できます。
options
オブジェクトにgateway_authentication
を含めた場合、Auth0は、SMSゲートウェイに要求を送信するときはいつでも、認証
ヘッダーにJSON Web Tokenを追加します。トークンは、gateway_authentication.subject
およびgateway_authentication.audience
値を含み、gateway_authentication.secret
で署名されます。
シークレットがBase64URLエンコードされている場合は、secret_base64_encoded
をtrue
に設定します。
接続を更新したら、Auth0は、ユーザーがパスワードレス接続にサインアップまたはログインするたびに、以下をSMSに送信します。
options
オブジェクトのforward_req_info
プロパティをtrue
に設定した場合、ゲートウェイは、パスワードレスプロセスを開始するHTTP要求からも情報を受け取ります。これには、/passwordless/start
およびユーザーエージェントを呼び出すクライアントのIPアドレスが含まれます。
エラー処理
Auth0は、SMSゲートウェイから返されたHTTPコードのみを考慮し、他の応答を無視します(たとえば、応答本文や応答タイプ)。 SMSゲートウェイが200以外のHTTPコードを返した場合、/passwordless/start
エンドポイントは、HTTP 400コードと以下のような応答を返します。
error_description
は、 SMSゲートウェイ呼び出し中に認証に失敗しました:401 になります。(エラーの説明の言葉遣いは、いつでも変更される可能性がありますのでご注意ください)
Auth0では、カスタムSMSゲートウェイに対するHTTPの呼び出しについて、30秒のタイムアウトを強制できます。SMSゲートウェイがこの時間枠内に応答しなかった場合も、/passwordless/start
エンドポイントはHTTP 400コードを返します。応答は、上記のフォーマットで行われ、error_description
フィールドは、 SMSゲートウェイ呼び出し中にタイムアウト:<Timeout Code>
となります。(繰り返しになりますが、エラーの説明の言い回しは、いつでも変更される可能性があります)