使用英语阅读

通过


通过 Microsoft Graph CLI 使用仅限应用的身份验证

Microsoft Graph 命令行界面 (CLI) 支持两种类型的身份验证: 委托访问仅应用访问。 本主题介绍启用仅应用访问所需的配置。

备注

仅限应用的访问权限直接向应用程序授予权限,并要求管理员同意所需的权限范围。 有关详细信息,请参阅 Microsoft 标识平台 和 OAuth 2.0 客户端凭据流

在本主题中,你将为一个简单的脚本配置仅限应用的访问权限,以列出 Microsoft 365 租户中的用户和组。

配置

在对 SDK 使用仅限应用的访问权限之前,需要满足以下条件:

  • 要用作应用程序的凭据的证书。 这可以是自签名证书或颁发机构的证书。 有关如何创建自签名证书的详细信息,请参阅 相关内容 部分。
  • 在 Microsoft Entra ID 中注册应用程序,使用方案所需的权限范围对其进行配置,并共享证书的公钥。

证书

需要将 X.509 证书安装在要运行脚本的计算机上的用户信任存储中。 还需要以 .cer、.pem 或 .crt 格式导出证书的公钥。 需要证书使用者或其指纹的值。

注册应用程序

可以在Microsoft Entra 管理中心中注册应用程序。

  1. 登录到 Microsoft Entra 管理中心

  2. 展开“标识”菜单>,选择“应用程序>应用注册>”新建注册”。

  3. 在“注册应用”页上,按如下方式设置值。

    • 将“名称”设置为“Graph CLI App-Only”。
    • “支持的帐户类型 ”设置为 “仅此组织目录中的帐户”。
    • 重定向 URI 留空。
  4. 选择“注册”。 在 “图形 CLI 仅限应用 ”页上,复制 “应用程序 (客户端) ID ”和 “目录 (租户) ID ”的值并保存它们。

    新应用注册的应用程序 ID 的屏幕截图

  5. “管理”下,选择“ API 权限”。 选择 “添加权限”。

  6. 依次选择 “Microsoft Graph”、“ 应用程序权限”。 添加 User.Read.AllGroup.Read.All,然后选择 “添加权限”。

  7. “配置的权限”中,通过选择权限右侧的 ...并选择“删除权限”,删除Microsoft Graph 下的委托 User.Read权限。 选择“ 是,删除” 以确认。

  8. 选择“ 授予管理员同意...” 按钮,然后选择“ ”,为配置的应用程序权限授予管理员同意。 “已配置的权限”表中的“状态”列将更改为 “授予 ...”

    已授予管理员同意的配置权限的屏幕截图

  9. “管理”下,选择“ 证书 & 机密”,然后选择“ 证书 ”选项卡。选择“ 上传证书 ”按钮。 浏览到证书的公钥文件,然后选择“ 添加”。

身份验证

完成前面的配置步骤后,应该有三条信息:

  • 上传到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