通过 Microsoft Graph CLI 使用仅限应用的身份验证
Microsoft Graph 命令行界面 (CLI) 支持两种类型的身份验证: 委托访问和 仅应用访问。 本主题介绍启用仅应用访问所需的配置。
备注
仅限应用的访问权限直接向应用程序授予权限,并要求管理员同意所需的权限范围。 有关详细信息,请参阅 Microsoft 标识平台 和 OAuth 2.0 客户端凭据流。
在本主题中,你将为一个简单的脚本配置仅限应用的访问权限,以列出 Microsoft 365 租户中的用户和组。
在对 SDK 使用仅限应用的访问权限之前,需要满足以下条件:
- 要用作应用程序的凭据的证书。 这可以是自签名证书或颁发机构的证书。 有关如何创建自签名证书的详细信息,请参阅 相关内容 部分。
- 在 Microsoft Entra ID 中注册应用程序,使用方案所需的权限范围对其进行配置,并共享证书的公钥。
需要将 X.509 证书安装在要运行脚本的计算机上的用户信任存储中。 还需要以 .cer、.pem 或 .crt 格式导出证书的公钥。 需要证书使用者或其指纹的值。
可以在Microsoft Entra 管理中心中注册应用程序。
登录到 Microsoft Entra 管理中心。
展开“标识”菜单>,选择“应用程序>应用注册>”新建注册”。
在“注册应用”页上,按如下方式设置值。
- 将“名称”设置为“
Graph CLI App-Only
”。 - 将 “支持的帐户类型 ”设置为 “仅此组织目录中的帐户”。
- 将 重定向 URI 留空。
- 将“名称”设置为“
选择“注册”。 在 “图形 CLI 仅限应用 ”页上,复制 “应用程序 (客户端) ID ”和 “目录 (租户) ID ”的值并保存它们。
在 “管理”下,选择“ API 权限”。 选择 “添加权限”。
依次选择 “Microsoft Graph”、“ 应用程序权限”。 添加 User.Read.All 和 Group.Read.All,然后选择 “添加权限”。
在“配置的权限”中,通过选择权限右侧的 ...并选择“删除权限”,删除Microsoft Graph 下的委托 User.Read权限。 选择“ 是,删除” 以确认。
选择“ 授予管理员同意...” 按钮,然后选择“ 是 ”,为配置的应用程序权限授予管理员同意。 “已配置的权限”表中的“状态”列将更改为 “授予 ...”。
在 “管理”下,选择“ 证书 & 机密”,然后选择“ 证书 ”选项卡。选择“ 上传证书 ”按钮。 浏览到证书的公钥文件,然后选择“ 添加”。
完成前面的配置步骤后,应该有三条信息:
- 上传到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
该命令以 JSON 格式返回组的显示名称和 ID。
{
"@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