AAD マネージド ID を使用して Azure Sphere パブリック API にアクセスする
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に廃止され、ユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の 上にあるバージョン セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
この方法を使用すると、コード内の資格情報を使用せずに、Azure Active Directory (AAD) 認証をサポートする任意のサービスに対して認証を行うことができます。 AAD マネージド ID は、ユーザーに代わってサービス プリンシパルの作成または更新を処理します。 これは、Azure リソースでのみ使用できる特殊な種類のサービス プリンシパルです。 マネージド ID が削除されると、対応するサービス プリンシパルが自動的に削除されます。
システム割り当て: Azure サービスによっては、サービス インスタンスに対して直接マネージド ID を有効にすることができます。 たとえば、Azure アプリ サービスです。 システム割り当てマネージド ID を有効にすると、そのサービス インスタンスのライフサイクルに関連付けられた ID が Azure AD に作成されます。 したがって、リソースが削除されると、その ID も Azure によって自動的に削除されます。 その ID を使用して Azure AD にトークンを要求できるのは、必然的に、その Azure リソースのみとなります。
前提条件
- 開発機能を 備えた Azure Sphere ベースのデバイス 。
- Azure Sphere テナント。
- Azure Sphere の開発環境を設定します。
- Azure Active Directory テナント (テナント ID)。
- Azure サブスクリプション。
- Azure Sphere パブリック API アプリケーション ID を Azure テナントに追加します。
次のセクションでは、マネージド ID を使用して Azure Web アプリから Azure Sphere パブリック API (PAPI) を呼び出す方法について説明します。
手順 1: リソースでシステム割り当て ID を有効にする
リソースでシステム割り当て ID を有効にし、プロジェクトのオブジェクト ID を検索するには:
- Azure portal の左側のナビゲーション ウィンドウで、[App Services] をクリックします。
- ドロップダウンから必要なサブスクリプションを選択し、検索結果からアプリを選択します。
- ロジック アプリのメニューの [設定] で、 [ID] を選択します。
- [状態] を [オン] に設定して、システム割り当て ID を有効にします。
- [保存] をクリックします。
- オブジェクト ID をコピーします。
手順 2: マネージド ID を Azure Sphere テナントに追加する
Note
この手順を開始する前に、次のことを確認してください。
- Azure Sphere テナント: Azure Sphere CLI を使用して azsphere tenant show-selected コマンドを実行します。
- Azure テナント ID: Azure portal を使用してテナント ID を検索します。 Azure Active Directory テナント ID をコピーします。
Azure Sphere は、サービス プリンシパルを別のユーザーとして扱います。 サービス プリンシパルを使用してトークンを取得するには、まずサービス プリンシパル ユーザーを Azure Sphere テナントに追加してから、Azure Sphere CLI を使用して Azure Sphere テナントのユーザーにロールを割り当てます。
ユーザー ID は ObjectID@<TenantID.onmicrosoft.com>> として<生成できます。
次の例では、Azure Sphere tttttttt-tttt-tttt-tttt-tttttttttttt
テナント ID にオブジェクト ID と Azure AD テナント ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
のzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
組み合わせを使用してユーザーを作成し、このユーザーの共同作成者ロールを追加します。
Azure Sphere CLI を使用して Azure Sphere ログインでサインインします。
azsphere login
必要なテナントを選択します。
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
必要なロールにユーザーを追加するには:
azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
手順 3: プロジェクトに Azure.Identity NuGet パッケージを追加する
プロジェクトに Azure.Identity NuGet パッケージ を追加します。 Azure Sphere パブリック API (PAPI) トークンは、DefaultAzureCredential によって取得できます。
たとえば、次のコード スニペットを参照してください。
public static async Task<string> GetAS3Token()
{
DefaultAzureCredential credential = new DefaultAzureCredential();
var result = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(
new[] { "https://firstparty.sphere.azure.net/api/.default" }));
return result.Token;
}