この記事について
この記事は、生成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ごとに必要最小権限を確認し、管理者同意を記録します。
公式情報
- Microsoft Learn ― OAuth 2.0 client credentials flow
- Microsoft Graph ― Authentication and authorization basics
この記事の更新履歴
- 2026-09-14 追加:.default、Application Permission、証明書/Managed Identity優先の考え方を追加。
- 2026-09-14 変更:独自AuthContext関数中心から認証フローと権限設計中心へ整理。
- 2026-09-14 削除:内部style_prompt、本文H1、150〜300msという未検証性能値、GCで平文シークレットを確実に消去できるかのような記述を削除。

