ユースケース
- サービス間通信をサポートしている
- 保護されたリソースや API へのアクセスが必要な、サーバー上で実行されるスケジュール済みジョブや cron タスクがある
- IoT デバイスがバックエンドサービスや API と通信できるようにしている
- ユーザーの関与なしに、またはユーザーのトークンの有効期限が切れた後に、ほかの API レイヤーと通信する必要がある API レイヤーがある
- ユーザーが認証される前に呼び出す必要がある可能性のある特権 API がある (つまり、Auth0 テナント内の Action やカスタムデータベーススクリプトから)
- API Gateway を使用してバックエンドサービスを管理している
- デーモンやバックエンドサービスなど、人による操作を伴わない非対話型アプリケーションやその他のツールを使用またはサポートしている
これらのサービスでも、認証には引き続き M2M アクセストークンが必要です。
このガイドの使い方
- アーキテクチャでは、ソフトウェア開発ライフサイクルと既存のインフラストラクチャに対応できるように Auth0 を設定することを推奨します。
- アカウントの作成では、Auth0 で API インスタンスを作成し、マシン間認証に必要な認証フロー (またはグラント) をサポートするアプリケーションを作成する手順を案内します。
- 認証では、認証に使用するグラントに加えて、設定可能な と権限 (またはスコープ) について説明します。
- ブランディングでは、証明書の管理方法に応じて、 の設定方法に関する情報の参照先を案内します。
- デプロイ自動化では、デプロイを支援する当社のツールについて確認できます。
- 品質保証では、単体テストに加え、 で提供されるReadiness Checksについて詳しく確認できます。
アーキテクチャ
考慮事項
-
特定のエンドポイントを呼び出すために、API をどのように分割またはグループ化するか。
- これにより、アクセストークンのオーディエンスやその他のクレームが決まる可能性があります。
-
リソースを利用するサードパーティのコンシューマーは、呼び出しのたびにアクセストークンを要求する場合があります。呼び出しが過剰になると、レート制限に影響する可能性があります。
- API Gateway を使用すると、サードパーティが要求できるアクセストークンの数を制限できます。API Gateway と Auth0 の詳細については、Access Gateway で IDプロバイダーを設定するを参照してください。
アカウントを作成する
開始前に
Auth0 Dashboard または Auth0 Management API で、次を作成します。
- 対象の API を表す API
- Client Credential Flow を使用するための M2M アプリケーション
- テナント名は Auth0 ドメインの一部になります。名前を決める前に、テナントの特性 を確認してください。
- ユースケースに必要な Auth0 の機能を確認してください。一部の機能は Professional プランと Enterprise プランでのみ利用できます。
- 開発、ステージング、本番環境など、複数の環境をサポートする必要があるかを判断してください。詳しくは、複数の環境を設定する を参照してください。
- テナントに登録したいサードパーティアプリケーションを含むユースケースがある場合は、OIDC Client Registration 仕様に基づく Dynamic Application Registration を使用できます。
テナントをプロビジョニングする
API を登録する
API は、Auth0 Dashboard または Management API の Update a resource server エンドポイントを呼び出して、いつでも更新できます。
- Auth0 Dashboard
- Management API
まず、Auth0 Dashboard で API のインスタンスを作成します。
- 手順に従って API を登録 します。
アプリケーションを関連付ける
設定を行う前に、Auth0 の API に関して確認しておくべき設定項目が複数あります。詳しくは、API Settingsを参照してください。
- Auth0 Dashboard
- Management API
Auth0 Dashboard で API を作成すると、Auth0 によってテスト用アプリケーションが自動的に生成され、その API に関連付けられます。
- Auth0 Dashboard > Applications に移動します。
-
API の作成時に作成された M2M テスト用アプリケーションを選択します。
開発用または本番用の別のアプリケーションは、後で Register Machine-to-Machine Applications の手順に従って作成できます。
- API ビューに切り替えて、このアプリケーションで有効にする API を探します。
- Authorize トグルを有効にし、右側の矢印ボタンを選択してカードを展開します。
-
Update を選択します。
このビューでは、ドロップダウンから追加するスコープを選択できます。スコープの詳細は、Authentication セクションのアクセストークンに関する説明で取り上げます。
認証
client_id と client_secret を使用して) 認証し、その後、1 回の呼び出しで認可します。
認証を行う非対話型のアプリケーションまたはサービスでは、クライアントグラント、つまり認証フローを選択する必要があります。 の Client Credentials Flow では人による操作は不要で、M2M アプリケーションに最適です。
始める前に
Auth0 Dashboard または Management API では、次の作業を行います。
- アプリケーションで Client Credentials Flow を使用するように設定する
- M2M アクセストークンのスコープを更新する
- マシン間認証の Client Credentials Flow を確認します。これは、非対話型の認証と認可に使用するフローです。
- API のアクセスレベルを決定します。これにより、API の作成時に設定する scopes、つまり権限を判断できます。
クライアントクレデンシャルフローを設定する
M2M アクセストークン
client_id と client_secret を指定して、アクセストークン を取得します。このアクセストークンにより、保護された API にアクセスできます。
デフォルトのプロファイル (形式) は、2 つあるトークンプロファイルのうち Auth0 トークンプロファイルです。トークンプロファイルは RFC 9068 に変更することもできます。詳しくは、Access Token Profiles を参照してください。トークンが有効かどうかを検証するために、API は Signing Algorithms を確認します。デフォルトの は、鍵ベースのアルゴリズムである RSA256 です。
Auth0 は、認証情報としてクライアントIDとクライアントシークレットを使用する方法以外のクライアント認証方式もサポートしています。これらの方式は、M2M 構成向けの推奨方式である Private Key JWT を含め、Enterprise プランで利用できます。詳しくは、Application Credentials を参照してください。
例
/oauth/token エンドポイントへのリクエストは、次のサンプルのようになります。
レスポンスは、次のサンプルのようになります。
トークンの有効期限
スコープ
アクセストークンにカスタムクレームを追加するには、Actions の Machine-to-Machine Flow を使用できます。詳しくは、Machine to Machine Flow を参照してください。
ブランディング
カスタムドメイン
/authorize エンドポイントを呼び出す際、カスタムドメインを使用できます。
M2M Onboarding - カスタムドメイン
Auth0 Dashboard では、次の対応が必要です。
- Auth0 サービスで使用する前に、ドメインを登録して検証します。
- 独自の証明書を管理するか、Auth0 管理の証明書を使用するかを決定します。証明書の詳細については、証明書管理オプションを参照してください。
- 自己管理証明書で使用する TLS (SSL) のバージョンと暗号スイートが Auth0 でサポートされていることを確認します。詳細については、TLS (SSL) のバージョンと暗号スイートを参照してください。
-
Auth0 管理証明書を使用してカスタムドメインを設定するには、Auth0 管理証明書を使用したカスタムドメインの設定の手順に従ってください。
-
独自の証明書を管理する場合は、自己管理証明書を使用したカスタムドメインの設定の手順に従ってください。
カスタムドメインで証明書を管理するには、Enterprise サブスクリプションが必要です。詳細については、Auth0 Pricing と Login を参照してください。
-
独自の証明書を管理する場合は、自己管理証明書を使用したカスタムドメインの設定の手順に従ってください。
- カスタムドメインを使用する API 設定を確認してください。カスタムドメインに対応するため、API 設定の調整が必要になる場合があります。
デプロイ自動化
ベストプラクティス
デプロイ自動化の構成方法にかかわらず、デプロイ前にカスタムコードと Actions の単体テストを実施し、デプロイ後にはテナントに対していくつかの統合テストも実行することをお勧めします。
Deploy CLI Tool
Actions リアルタイムログ
console.log の出力やその他の例外を含む、カスタムコードのすべてのログをリアルタイムで表示します。Auth0 Actions やその他のカスタムロジックを使用している場合は、この拡張機能を使ってデバッグやトラブルシューティングを行えます。インストールと設定の詳細については、Actions リアルタイムログ を参照してください。
品質保証
- 想定外の本番環境の負荷がかかった場合、API はどのように動作しますか?
- サードパーティアプリケーションは、レート制限にどのような影響を与えますか?
ユニットテスト
モックテスト
デプロイ
