ユースケース
- サービスツーサービス通信をサポートする
- 保護されたリソースまたはAPIにアクセスする必要があるサーバー上でスケジュールされたジョブまたはcronタスクが実行されている
- IoTデバイスがバックエンドサービスまたはAPIと通信できるようにする
- ユーザーの関与なし、またはユーザートークンの有効期限が切れた後に他のAPIレイヤーと通信する必要があるAPIレイヤーがある
- ユーザーが認証される前に呼び出す必要がある特権APIがある(つまり、Auth0テナントのアクションまたはカスタムデータベーススクリプトから)
- APIゲートウェイを使用してバックエンドサービスを管理する
- 非対話型アプリケーションや、daemonやバックエンドサービスなど人間との対話を含まないその他のツールを使用またはサポートする
これらのサービスは引き続き認証にM2Mアクセストークンが必要です。
このガイドの使用方法
- 「アーキテクチャ」では、ソフトウェア開発ライフサイクルと既存のインフラストラクチャをサポートするようにAuth0を構成することをお勧めします。
- 「アカウントの作成」では、Auth0でAPIインスタンスを作成する手順と、マシンツーマシン認証に必要な認証フロー(または権限許可)をサポートするアプリケーションを作成する手順を示します。
- 「認証」では、認証に使用する必要がある権限許可と、設定できるアクセストークンおよびアクセス許可(またはスコープ)について説明します。
- 「ブランディング」では、証明書の管理方法に応じて、カスタムドメインの構成方法に関する情報をどこで入手できるかをアドバイスします。
- 「デプロイメントの自動化」では、デプロイメントを支援するツールについて読むことができます。
- 「品質保証」では、ユニットテストと、で提供される準備チェックについて詳しく説明します。
アーキテクチャ
考慮事項
-
特定のエンドポイントを呼び出すためにAPIを分割またはグループ化する方法。
- これにより、アクセストークンのオーディエンスやその他のクレームが決定されます。
- リソースのサードパーティコンシューマーは、呼び出しごとにアクセストークンを要求する場合があります。呼び出しが多すぎると、レート制限に影響する可能性があります。
アカウントの作成
開始する前に
Auth0 Dashboard内またはAuth0 Management APIを使用して、以下を作成します。
- APIを表すAPI
- クライアントの資格情報フローを使用するM2Mアプリケーション
- テナント名には、Auth0ドメインにおけるロールが含まれます。名前を決める前に、「テナントの特性」をお読みください。
- ユースケースに必要となるAuth0機能を検討します。機能によっては、プロフェッショナルおよびエンタープライズプラン以外では、ご利用いただけません。
- 開発、ステージング、本番など、複数の環境に対応する必要があるか決定します。詳細については、「複数の環境をセットアップする」をお読みください。
- テナント内に登録するサードパーティアプリケーションが関連するユースケースがある場合、OIDCクライアント登録の仕様に基づいて、動的アプリケーション登録を使用することができます。
- 「バックエンドサービスおよびAPIライブラリー」をお読みのうえ、クイックスタートをお試しください。
テナントのプロビジョニング
APIの登録
Auth0ダッシュボード内、あるいは管理APIリソースサーバーの更新エンドポイントを呼び出すことで、いつでもAPIを更新できます。
- Auth0ダッシュボード
- Mangement API
まず、Auth0 DashboardでAPI用のインスタンスを作成します。
- 指示に従ってAPIを登録します。
アプリケーションの関連付け
Auth0のAPIには、構成前に確認の必要がある設定が複数あります。詳細については、「APIの設定」をお読みください。
- Auth0 Dashboard
- Mangement API
DashboardでAPIを作成する場合、Auth0は自動的にテストアプリケーションを生成し、APIに関連付けます。
- [Auth0 Dashboard] > [Applications(アプリケーション)]に移動します。
-
API作成時に作成したテストM2Mテストアプリケーションを選択します。
後から開発向けまたは運用向けの別のアプリケーションを作成するには、マシンツーマシン(M2M)アプリケーションを登録の手順に従います。
- [API] ビューに切り替え、このアプリケーションに対して有効にしたいAPIを見つけます。
- [Authorize(認可)] トグルを有効にし、右側にある矢印ボタンを選択してカードを展開します。
-
[Update(更新)] を選択します。
このビューでは、ドロップダウンを選択して、追加したいスコープを選択できます。スコープについては、[Authentication(認証)]セクションのアクセストークンについて説明するときに詳しく説明します。
認証
client_idとclient_secretを使用)、1回の呼び出しで認可される1ステッププロセスです。
非対話型アプリケーションまたはサービスの認証では、クライアント権限許可または認証フローを選択する必要があります。Auth 2.0クライアントの資格情報フローは、人間の介入を必要とせず、M2Mアプリケーションに最適です。
開始する前に
Auth0 DashboardやManagement APIで、以下のことを行います。
- クライアントの資格情報フローを使用するようにアプリケーションを設定します。
- M2Mアクセストークンのスコープを更新します。
- マシンツーマシン認証については、「クライアントの資格情報フロー」を参照してください。これは非対話型の認証と認可のワークフローです。
- APIのアクセスレベルを決定します。これは、APIを作成する際に構成するスコープや権限を決めるのに役立ちます。
クライアントの資格情報フローを構成する
M2Mアクセストークン
client_idとclient_secretを提供し、アクセストークンを取得します。このアクセストークンにより、保護されたAPIへのアクセスが許可されます。
デフォルトのプロファイルまたは形式は、2つのトークンプロファイルに関連付けられたAuth0トークンプロファイルです。トークンプロファイルをRFC 9068に変更することもできます。詳細については、「アクセストークンのプロファイル」をお読みください。トークンが有効であることを確認するために、APIは署名アルゴリズムをチェックします。デフォルトの署名アルゴリズムは、キーベースのアルゴリズムであるRSA256です。
Auth0は、資格情報としてクライアントIDとクライアントシークレットを提供するほか、他のクライアント認証方法もサポートしています。これらのメソッドは、M2Mの構成の秘密鍵JWTの推奨を含め、エンタープライズプランで利用できます。詳細については、「アプリケーションの資格情報」をお読みください。
例
/oauth/tokenエンドポイントへの要求は、次のサンプルのようになります。
応答は、次のサンプルのようになります。
トークンの有効期限
Scopes(スコープ)
アクセストークンにカスタムクレームを追加するには、アクションマシンツーマシンフローを使用できます。詳細については、「マシンツーマシンフロー」をお読みください。
ブランディング
カスタムドメイン
/authorizeエンドポイントを呼び出してアクセストークンを要求するときに、カスタムドメインの使用をサポートします。
M2Mオンボーディング - カスタムドメイン
Auth0ダッシュボードでは、次の操作を行う必要があります。
- Auth0サービスで使用する前に、ドメインを登録して検証します。
- 独自の証明書を管理するか、Auth0管理の証明書を使用するかを決定します。証明書の詳細については、「証明書管理のオプション」をお読みください。
- 自己管理証明書に使用するTLS(SSL)のバージョンと暗号がAuth0でサポートされていることを確認します。詳細ついては、「TLS(SSL)のバージョンと暗号」をお読みください。
-
Auth0管理の証明書を使用してカスタムドメインを構成するには、「Auth0管理証明書を使ってカスタムドメインを構成する」の手順に従ってください。
-
独自の証明書を管理する場合は、「自己管理証明書を使ってカスタムドメインを構成する」の手順に従ってください。
カスタムドメインで証明書を管理するには、エンタープライズサブスクリプションが必要です。詳細については、「Auth0の価格設定」と「ログイン」をお読みください。
-
独自の証明書を管理する場合は、「自己管理証明書を使ってカスタムドメインを構成する」の手順に従ってください。
- 「カスタムドメインを使用したAPI構成」を確認してください。カスタムドメインを組み込むには、API設定を調整する必要がある場合があります。
デプロイメント自動化
ベストプラクティス
デプロイメントの自動化をどのように構成する場合でも、デプロイメント前にカスタムコードとアクションの単体テストを実行し、デプロイメント後にテナントに対して統合テストを実行することをお勧めします。
CLIツールのデプロイ
Real-time Webtask Logs拡張機能
console.log出力やその他の例外など、カスタムコードのすべてのログをリアルタイムで表示します。Auth0 Actionsまたはその他のカスタムロジックを使用している場合は、この拡張機能を使用してデバッグとトラブルシューティングを行うことができます。インストールと構成の詳細については、「Real-time Webtask Logs拡張機能」をご覧ください。
品質保証
- 予期しない本番負荷にさらされた場合、APIはどのように機能しますか?
- サードパーティアプリケーションによってレート制限はどのように影響を受けますか?
ユニットテスト
モックテスト
Deployment(デプロイ)
