Microsoft Graph CLI でアプリ専用認証を使用する
Microsoft Graph コマンド ライン インターフェイス (CLI) では、 委任されたアクセスと アプリ専用アクセスの 2 種類の認証がサポートされています。 このトピックでは、アプリのみのアクセスを有効にするために必要な構成について説明します。
注意
アプリ専用アクセスは、アプリケーションに直接アクセス許可を付与し、管理者は必要なアクセス許可スコープに同意する必要があります。 詳細については、「Microsoft ID プラットフォームと OAuth 2.0 クライアント資格情報フロー」をご覧ください。
このトピックでは、Microsoft 365 テナント内のユーザーとグループを一覧表示する単純なスクリプトのアプリ専用アクセスを構成します。
SDK でアプリ専用アクセスを使用するには、次のものが必要です。
- アプリケーションの資格情報として使用する証明書。 自己署名証明書、または機関からの証明書を指定できます。 自己署名証明書を作成する方法の詳細については、「 関連コンテンツ 」セクションを参照してください。
- アプリケーションをMicrosoft Entra IDに登録し、シナリオで必要なアクセス許可スコープで構成し、証明書の公開キーを共有します。
スクリプトを実行するコンピューター上のユーザーの信頼されたストアに X.509 証明書がインストールされている必要があります。 証明書の公開キーは、.cer、.pem、または .crt 形式でエクスポートする必要もあります。 証明書のサブジェクトまたはその拇印の値が必要です。
アプリケーションは、Microsoft Entra 管理センターで登録できます。
Microsoft Entra 管理センターにサインインします。
[ID] メニューを展開し、[アプリケーション>アプリの登録>新しい登録] を選択します>。
[アプリケーションを登録] ページで、次のように値を設定します。
-
Graph CLI App-Only
に [名前] を設定します。 - [ サポートされているアカウントの種類 ] を [この組織のディレクトリ内のアカウントのみ] に設定します。
- リダイレクト URI は空白のままにします。
-
[登録] を選択します。 [Graph CLI アプリのみ] ページで、アプリケーション (クライアント) ID とディレクトリ (テナント) ID の値をコピーして保存します。
[ 管理] で、[ API アクセス許可] を選択します。 [ アクセス許可の追加] を選択します。
[Microsoft Graph]、[アプリケーションのアクセス許可] の順に選択します。 User.Read.All と Group.Read.All を追加し、[アクセス許可の追加] を選択します。
[ 構成済みアクセス許可] で、権限の右側にある [ ... ] を選択し、[アクセス許可の削除] を選択して、 Microsoft Graph の委任された User.Readアクセス許可を削除します。 [ はい、削除] を選択 して確定します。
[ 管理者の同意を付与する]ボタンを 選択し、[ はい ] を選択して、構成されたアプリケーションのアクセス許可に対する管理者の同意を付与します。 [構成済みのアクセス許可] テーブルの [状態] 列が [...] に変更されます。
[ 管理] で、[ 証明書 & シークレット] を選択し、[ 証明書 ] タブを選択します。[ 証明書のアップロード ] ボタンを選択します。 証明書の公開キー ファイルを参照し、[ 追加] を選択します。
前の構成手順を完了した後、次の 3 つの情報が必要です。
- Microsoft Entra アプリの登録にアップロードされた証明書の証明書の件名または拇印。
- アプリ登録のアプリケーション ID。
- テナント ID。
この情報を使用して認証をテストします。 PowerShell を開き、次のコマンドを実行し、プレースホルダーを自分の情報に置き換えます。
mgc login --client-id YOUR_APP_ID --tenant-id YOUR_TENANT_ID --certificate-name "YOUR_CERT_SUBJECT" --strategy ClientCertificate
または、サブジェクトの代わりに証明書の拇印を使用することもできます。
mgc login --client-id YOUR_APP_ID --tenant-id YOUR_TENANT_ID --certificate-thumb-print "YOUR_CERT_THUMBPRINT" --strategy ClientCertificate
次のコマンドを実行して、テナント内の最初の 50 人のユーザーを表形式で一覧表示します。
mgc users list --select displayName,id --top 50 --output TABLE
コマンドは、テーブル内のユーザーの表示名と ID を返します。
┌────────────────────────────────────┬──────────────────────────────────────────────────┐
│ displayName │ id │
├────────────────────────────────────┼──────────────────────────────────────────────────┤
│ Conf Room Adams │ 70214bd8-c3eb-4ec4-8c3e-9027b2764c52 │
│ Adele Vance │ 05fb57bf-2653-4396-846d-2f210a91d9cf │
│ MOD Administrator │ 965d30b5-f1ba-4f59-90f0-4d81dfb1aa42 │
│ Alex Wilber │ a36fe267-a437-4d24-b39e-7344774d606c │
│ Allan Deyoung │ 54cebbaa-2c56-47ec-b878-c8ff309746b0 │
└────────────────────────────────────┴──────────────────────────────────────────────────┘
次のコマンドを実行して、テナント内の最初の 50 グループを JSON 形式で一覧表示します。
mgc groups list --select displayName,id --top 50
コマンドは、グループの表示名と ID を JSON 形式で返します。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups(displayName,id)",
"value": [
{
"displayName": "Parents of Contoso",
"id": "1a0405b3-57d1-48fc-ad18-6cb63b350826"
},
{
"displayName": "Digital Initiative Public Relations",
"id": "22cf3814-dbef-4eb0-abe3-759b320b7d76"
},
{
"displayName": "Communications",
"id": "268360c5-ad3a-44c0-b35c-cef473609d9d"
},
{
"displayName": "Paralegals",
"id": "2fb31b50-4c46-4ae9-8177-19347e68ce8e"
},
{
"displayName": "Leadership",
"id": "364fad81-7c37-455d-94bb-7d5a209c42fe"
},
]
}
最後に、CLI からサインアウトします。
mgc logout