メインコンテンツへスキップ
パスワードレスAPIは次の2つのシナリオで使用できます。
  • ユニバーサルログインを実装し、Auth0とインタラクションするためにauth0.jsを使用してログインページをカスタマイズする場合。
  • アプリケーションにログインフローを埋め込む場合。
ログインを埋め込む場合、セキュリティ上の影響を必ず理解してください。 さまざまなシナリオでユニバーサルログインと埋め込みログインにパスワードレスを実装する方法の詳細については、「ユニバーサルログインを使用したパスワードレス認証」または「埋め込みログインを使用したパスワードレス認証」をお読みください。

パスワードレスエンドポイント

POST /passwordless/start

[Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、アプリケーション設定の [Advanced Settings(高度な設定] にある [Grant Types(付与タイプ)][Passwordless OTP(パスワードレスOTP)] の付与を有効にしなければなりません。
POST /passwordless/startエンドポイントを呼び出すと、クラシックログインと埋め込みログインの両方でパスワードレス認証プロセスを開始できます。 エンドポイントに提供されたパラメーターに応じて、Auth0は次のいずれかを送信してユーザー検証プロセスを開始します。
  • メールまたはSMSメッセージによる1回限りのコード
  • メールによる1回限りのリンク
API 呼び出しは次の構造を持つ必要があります。 マジックリンクを使用すると、ユーザーは認証APIによって生成されたリンクを受け取ります。ユーザーはリンクを選択し、{yourAuth0Tenant}.auth0.com/passwordless/verify-redirectへの呼び出しをトリガーします。Auth0 はユーザーをアプリケーションにリダイレクトし、ユーザーはログインします。 コードを使用する場合、アプリケーションはそのコードの入力を求める必要があり、その後、/oauth/tokenエンドポイント、またはAuth0.js SDK のpasswordlessLoginメソッドを使用して、そのコードを認証トークンと交換する必要があります。

POST /oauth/token

ネイティブアプリケーションまたは通常のWebアプリケーションにパスワードレスを実装する場合は、/oauth/tokenを使用してOTPコードを認証トークンと交換する必要があります。このエンドポイントはシングルページアプリケーションからは使用できません。 これを実現するには、まず、アプリケーションの設定の [Advanced Settings(詳細設定)] > [Grant Types(付与タイプ)] にある[Auth0 Dashboard(Auth0ダッシュボード)]>[Applications(アプリケーション)]>[Applications(アプリケーション)]で、アプリケーションの OTP(パスワードレスOTP)] 付与を有効にする必要があります。 ユーザーはOTPコードを受け取り、ネイティブアプリケーションまたはWebアプリケーションがユーザーにOTPコードの入力を求めます。ユーザーがコードを入力すると、次のパラメーターを使用して/oauth/tokenエンドポイントを呼び出すことで認証フローを完了できます。 すべてがうまくいけば、Auth0は次のような応答を返します。
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJz93a...k4laUWw",
"refresh_token":"GEbRxBN...edjnXbL",
"id_token":"eyJ0XAi...4faeEoQ",
"token_type":"Bearer",
"expires_in":86400
}
その後、IDトークンをデコードしてユーザーに関する情報を取得したり、アクセストークンを使用して通常どおりAPIを呼び出したりすることができます。

Auth0.jsを使用する

シングルページアプリケーションまたはカスタマイズされたユニバーサルログインページでパスワードレス認証を実装する場合は、Auth0.jsとそれに含まれるpasswordlessLoginメソッドを使用する必要があります。実装は複雑なので、APIを直接呼び出すのではなく、ライブラリーを使用することをお勧めします。

パスワードレスエンドポイントでのレート制限

Auth0のレート制限と攻撃保護機能は、API呼び出しを行っているマシンのIPのみを考慮します。API呼び出しがバックエンドサーバーから行われる場合、通常、Auth0ではサーバーのIPではなく、エンドユーザーのIPを考慮する必要があります。 Auth0はAPI呼び出しでauth0-forwarded-forヘッダーを指定することをサポートしていますが、次の場合にのみ考慮されます。
  • 機密アプリケーションに対してAPI呼び出しが行われる。
  • API 呼び出しにはクライアントシークレットが含まれている。
  • [Trust IP Header(信頼トークンエンドポイントIPヘッダー)] トグルがオンになっている。
完全な説明については、「リソース所有者のパスワードフローと攻撃防御のよくある不具合を回避する」をお読みください。
I