認証と権限承認

IoT Central アプリケーションに対して行われるすべての REST API 呼び出しには、Authorization ヘッダーを含める必要があります。 Authorization ヘッダーには、 API トークン または AAD ベアラー トークンが含まれている必要があります。 これらのトークンは、呼び出し元が誰であるか、およびアプリケーション内で何にアクセスできるかを決定するために、IoT Central によって使用されます。

API トークン

API トークンは、サインインしているユーザー コンテキストを使用せずに、サービス間通信を目的とします。 アプリケーションで API トークンを作成し、アプリケーション内のリソースへのアクセスを許可するロールを割り当てることができます。

API トークンを作成して使用するには:

  1. ブラウザーで IoT Central アプリケーションを開きます。

  2. [管理/API トークン] に移動します

  3. [トークンの生成] をクリックします。 名前を付けてロールを選択するように求められます。 このロールは、このトークンを使用するクライアントがこのアプリケーションで何を行うことが許可されているかを決定します。

  4. トークンを生成し、値をコピーします。 値はシークレットであり、1 回だけ表示されます。

  5. API 要求を構築するときに、次のようなヘッダーを追加します。

    ヘッダー名 ヘッダー値
    承認 <API トークン値>

既定では、アプリケーションでは 3 つのロールを使用できます。 新しいロールの作成の詳細については、こちらを参照してください

新しい API トークンをプログラムで作成することもできます。 新しい API トークンを作成する API 要求を行うには、新しい API トークンを作成するためのアクセス許可を持つ API トークンまたはベアラーを含む Authorization ヘッダーが必要です。 API トークン操作に関するドキュメントを参照してください

AAD ベアラー トークン

ベアラー トークンは、IoT Central アプリケーションに追加された Azure Active Directory ユーザー アカウントに関連付けられます。 ベアラー トークンは、Azure CLI コマンドで生成できます。 az account get-access-token --resource https://apps.azureiotcentral.com

次のヘッダーを使用して API 要求を構築します。

ヘッダー名 ヘッダー値
承認 ベアラー <ベアラー トークン値>

API 要求でベアラー トークンを使用する場合、呼び出し元には、Azure Active Directory ユーザーが IoT Central アプリケーションで持っているのと同じレベルのアクセス権が付与されます。

サービス プリンシパルの認証

AAD サービス プリンシパルを使用して API に対する認証を行うには、まずサービス プリンシパルを作成する必要があります。 サービス プリンシパルのテナント ID とオブジェクト ID を取得する必要があります。

  1. [Azure portal - Azure Active Directory ->> 概要] に移動します。 tenantID をコピーする
  2. [エンタープライズ アプリケーション] に移動します。 新しいアプリケーションを作成するか、既存のアプリケーションを選択します。 objectID をコピーする
  3. [Azure portal - Azure Active Directory ->> アプリの登録 - アプリ ->> API のアクセス許可] に移動します。 [アクセス許可の追加 -> organizationが使用する API] をクリックし、Microsoft IoT Central を検索します。 この正確なテキストに一致する項目を選択します。
  4. [user_impersonationApplication.ReadWrite.All のアクセス許可を選択し、追加します。
  5. [ Grant admin consent for your directory]\(ディレクトリに管理者の同意を付与する\) を選択します

最後に、サービス プリンシパルを IoT Central アプリケーションに追加します。 これは、現在の API を通じて可能です。

  1. Create users API を使用して、このサービス プリンシパル ユーザーを追加します。 新しいユーザーを作成するときは、 必ず {tenantID}{objectID} を 使用してください。

これで、上記と同じ手順に従って、このサービス プリンシパル ユーザーに関連付けられているベアラー トークンを使用して API 要求を行うことができます。

次のステップ

最初の API 要求を行ってみてください