快速入门:访问受保护的 Web API 的 .NET 控制台应用

本快速入门使用示例 .NET 控制台应用程序通过适用于 .NET 的 Microsoft 身份验证库 (MSAL) 访问受保护的 Web API 作为其自己的标识。 该应用程序是一个守护程序应用程序,它是一个机密客户端应用程序,使用客户端凭据 OAuth 流获取访问令牌来调用 Microsoft Graph API。

先决条件

注册应用程序和记录标识符

若要完成注册,请为应用程序命名并指定支持的帐户类型。 注册后,应用程序“概述”窗格将显示应用程序源代码中所需的标识符。

  1. 登录 Microsoft Entra 管理中心

  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你希望在其中注册应用程序的租户。

  3. 浏览至“标识”>“应用程序”>“应用注册”,然后选择“新建注册”。

  4. 输入应用程序的“名称”,例如“identity-client-daemon-app”。

  5. 对于“支持的帐户类型”设置,请选择“仅限此组织目录中的帐户”。 要了解不同帐户类型的信息,请选择“帮我选择”选项。

  6. 选择“注册”。

    显示如何在 Microsoft Entra 管理中心输入名称和选择帐户类型的屏幕截图。

  7. 注册完成后,将显示应用程序的“概述”窗格。 记录要在应用程序源代码中使用的“目录(租户)ID”、“应用程序(客户端)ID 和“对象 ID”

    屏幕截图显示 Microsoft Entra 管理中心的概述页面上的标识符值。

    备注

    可以通过参照修改应用程序支持的帐户来更改支持的帐户类型。

创建客户端机密

  1. Microsoft Entra 管理中心,浏览到“标识”>“应用程序”>“应用注册”。
  2. 选择你在前面注册的应用程序。
  3. 在应用程序的“概览”窗格中,选择“证书和机密”>“新建客户端密码”。
  4. 在“说明”字段中输入机密的说明。
  5. 选择机密的到期期限。
  6. 选择 添加
  7. 记录客户端密码的值。 该值仅显示一次,因此请确保记录它。

克隆或下载示例应用程序

若要获取示例应用程序,可以从 GitHub 克隆它或将其下载为 .zip 文件。

  • 若要克隆示例,请打开命令提示符并导航到要创建项目的位置,然后输入以下命令:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  • 下载 .zip 文件。 将其提取到名称长度小于 260 个字符的文件路径。

配置项目

  1. 在 IDE 中,打开包含示例的项目文件夹 ms-identity-docs-code-dotnet/console-daemon。

  2. 打开 Program.cs,并将文件内容替换为以下代码片段

     // Full directory URL, in the form of https://login.microsoftonline.com/<tenant_id>
     Authority = " https://login.microsoftonline.com/Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center",
     // 'Enter the client ID obtained from the Microsoft Entra admin center
     ClientId = "Enter the client ID obtained from the Microsoft Entra admin center",
     // Client secret 'Value' (not its ID) from 'Client secrets' in the Microsoft Entra admin center
     ClientSecret = "Enter the client secret value obtained from the Microsoft Entra admin center",
     // Client 'Object ID' of app registration in Microsoft Entra admin center - this value is a GUID
     ClientObjectId = "Enter the client Object ID obtained from the Microsoft Entra admin center"
    
    • Authority - 颁发机构是一个 URL,表示 MSAL 可从中请求令牌的目录。 将“Enter_the_tenant_ID”替换为先前记录的“目录(租户)ID”值。
    • ClientId - 应用程序的标识符,也称为客户端。 将引号中的文本替换为先前在注册应用程序的概述页中记录的 Application (client) ID 值。
    • ClientSecret - 在 Microsoft Entra 管理中心为应用程序创建的客户端密码。 输入客户端密码的值。
    • ClientObjectId - 客户端应用程序的对象 ID。 将引号中的文本替换为先前在注册应用程序的概述页中记录的 Object ID 值。

运行应用程序

  1. 在终端中,导航到项目目录 ms-identity-docs-code-dotnet/console-daemon。

  2. 运行以下命令以生成并运行应用程序:

    dotnet run
    
  3. 应用程序会运行并显示类似于以下内容的响应(为简洁起见缩短了):

    {
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
    "id": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "deletedDateTime": null,
    "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "applicationTemplateId": null,
    "disabledByMicrosoftStatus": null,
    "createdDateTime": "2021-01-17T15:30:55Z",
    "displayName": "identity-dotnet-console-app",
    "description": null,
    "groupMembershipClaims": null,
    ...
    }