Microsoft Graphをアプリ認証で自動実行する ― Client Credentialsと証明書認証の基本

Microsoft 365・Azureカテゴリを表すパンダのイラスト Microsoft 365・Azure

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft identity platformのClient Credentials Flowを基準に、旧本文の未検証性能値やGCによる秘密消去の誤解を除き、アプリ認証の設計ポイントへ絞りました。

検証ステータス:✅ Microsoft identity platform仕様に沿って再整理

人のサインインを介さずMicrosoft Graphを実行する場合は、Microsoft Entra IDのアプリ登録とOAuth 2.0 Client Credentials Flowを利用できます。トークン要求ではscope=https://graph.microsoft.com/.defaultを指定し、事前に同意されたアプリケーション権限がトークンへ反映されます。

最小構成

$body = @{
  client_id     = $ClientId
  scope         = 'https://graph.microsoft.com/.default'
  client_secret = $ClientSecret
  grant_type    = 'client_credentials'
}
$token = Invoke-RestMethod -Method Post `
  -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" `
  -ContentType 'application/x-www-form-urlencoded' -Body $body

ただし本番では、長期シークレットをスクリプトへ埋め込まず、証明書、Managed Identity、Key Vaultなど、実行基盤に合った方式を優先します。

権限設計が最重要

Client Credentialsではユーザーの権限ではなくアプリ自身の権限で動作します。便利な反面、広いApplication Permissionを付けると影響範囲も大きくなります。Graph APIごとに必要最小権限を確認し、管理者同意を記録します。

公式情報

この記事の更新履歴

  • 2026-09-14 追加:.default、Application Permission、証明書/Managed Identity優先の考え方を追加。
  • 2026-09-14 変更:独自AuthContext関数中心から認証フローと権限設計中心へ整理。
  • 2026-09-14 削除:内部style_prompt、本文H1、150〜300msという未検証性能値、GCで平文シークレットを確実に消去できるかのような記述を削除。

文書情報

記事タイトル
Microsoft Graphをアプリ認証で自動実行する ― Client Credentialsと証明書認証の基本
作成日
更新日
Source URL
https://papanda925.com/?p=5566

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました