快速入门:从 ASP.NET Core Web 应用登录用户并调用 Microsoft 图形 API

在本快速入门中,你将使用示例 ASP.NET Core Web 应用通过 授权代码流 登录用户,并调用 Microsoft 图形 API。 此示例使用适用于 .NET Microsoft 身份验证库和 Microsoft标识 Web 来处理身份验证。

先决条件

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

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

  1. 登录 Microsoft Entra 管理中心

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

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

  4. 输入应用程序名称,例如 identity-client-web-app。

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

  6. 选择“注册”

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

  7. 注册完成后,将显示应用程序的 概述 窗格。 记录 目录(租户)ID应用程序(客户端)ID 用于应用程序源代码。

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

    注意

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

添加平台重定向 URI

若要将应用类型指定到应用注册,请执行以下步骤:

  1. 管理下,选择 身份验证
  2. 平台配置 页上,选择 添加平台,然后选择“Web”选项。
  3. 对于“重定向 URI”,请输入 https://localhost:5001/signin-oidc
  4. 在“前通道注销 URL”下,输入 https://localhost:5001/signout-callback-oidc 来退出登录。
  5. 选择“配置”以保存更改。

克隆或下载示例应用程序

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

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

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

创建和上传自签名证书

若要保护应用程序,请将证书添加到应用程序。 本部分介绍如何创建自签名证书并将其上传到 Microsoft Entra 管理中心的应用程序注册。

注意

仅应在开发中使用自签名证书。 在生产环境中,应使用来自受信任证书颁发机构的证书。

  1. 使用终端,使用以下命令导航到项目目录中创建自签名证书。

    cd ms-identity-docs-code-dotnet\web-app-aspnet\
    dotnet dev-certs https -ep ./certificate.crt --trust
    
  2. 返回到Microsoft Entra 管理中心,在“管理”下,选择 证书 & 机密>上传证书

  3. 选择 证书(0) 选项卡,然后选择 上传证书

  4. 此时会显示“上传证书”窗格。 使用图标导航到在上一步中创建的证书文件,然后选择打开

  5. 输入证书的说明,例如 aspnet-web-app证书,然后选择 添加

  6. 记录 指纹 值,以便在下一步中使用。

配置项目

  1. 在 IDE 中,打开包含示例的项目文件夹,ms-identity-docs-code-dotnet\web-app-aspnet

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

    {
    "AzureAd": {
      "Instance": "https://login.microsoftonline.com/",
      "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center",
      "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center",
      "ClientCertificates": [
        {
          "SourceType": "StoreWithThumbprint",
          "CertificateStorePath": "CurrentUser/My",
          "CertificateThumbprint": "Enter the certificate thumbprint obtained the Microsoft Entra admin center"
        }   
      ],
      "CallbackPath": "/signin-oidc"
    },
      "DownstreamApi": {
        "BaseUrl": "https://graph.microsoft.com/v1.0/",
        "RelativePath": "me",
        "Scopes": [ 
          "user.read" 
        ]
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    
    • TenantId - 应用程序注册所在租户的标识符。 将引号中的文本替换为先前在注册应用程序的概述页面中记录的 Directory (tenant) ID
    • ClientId - 应用程序的标识符,也称为客户端。 将引号中的文本替换为先前在注册应用程序的概述页中记录的 Application (client) ID 值。
    • ClientCertificates - 自签名证书用于应用程序中的身份验证。 将 CertificateThumbprint 的文本替换为先前保存的证书拇指指纹。

运行应用程序并登录

  1. 在项目目录中,使用终端输入以下命令;

    dotnet run
    
  2. 复制终端中显示的 https URL,例如 https://localhost:5001,并将其粘贴到浏览器中。 建议使用专用或隐身浏览器会话。

  3. 按照步骤操作,并输入必要的详细信息,以使用 Microsoft 帐户登录。 系统会要求你提供电子邮件地址,以便可以向你发送一次性密码。 出现提示时输入代码。

  4. 应用程序请求权限,以便继续访问您已授权的数据,并且能够登录您的账户并读取您的个人资料。 选择 接受

  5. 将显示以下屏幕截图,指示已登录到应用程序,并从 Microsoft Graph API 访问配置文件详细信息。

    描述 API 调用结果的屏幕截图。

从应用程序注销

  1. 在页面右上角找到 注销 链接,然后选择它。
  2. 系统会提示你选择要从中注销的帐户。 选择用于登录的帐户。
  3. 此时会显示一条消息,指示你已注销。现在可以关闭浏览器窗口。