教程:设置对用户进行身份验证的 ASP.NET Core Web 应用

适用于:带白色勾号的绿色圆圈。 员工租户 带白色勾号的绿色圆圈。 外部租户(了解详细信息

在本教程中,你将创建一个 ASP.NET Core Web 应用并将其配置为身份验证。 这是系列的第 1 部分,演示如何生成 ASP.NET Core Web 应用程序,并使用 Microsoft Entra 管理中心对其进行身份验证准备。 此应用程序可用于员工租户中的员工或使用外部租户的客户

在本教程中:

  • 创建 ASP.NET Core Web 应用
  • 创建自签名证书
  • 配置应用程序的设置
  • 定义平台设置和 URL

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建帐户。 此帐户必须具有管理应用程序的权限。 使用以下任意一个角色注册应用程序:
    • 应用程序管理员
    • 应用程序开发人员
    • 云应用程序管理员
  • 尽管可以使用支持 ASP.NET Core 应用程序的任何集成开发环境(IDE),但本教程使用 Visual Studio Code。 可在此处下载
  • 最低要求是.NET 8.0 SDK
  • ASP.NET 核心开发人员证书。 使用 dotnet dev-certs 安装一个
  • 工作人员租户。 可以使用 默认目录设置新租户
  • 在 Microsoft Entra 管理中心注册的应用程序。 出于本教程系列的目的,请使用以下设置:
    • 名称:identity-client-web-app
    • 支持的帐户类型:仅限此组织目录中的帐户
    • 重定向 URIhttps://localhost:5001/signin-oidc
    • 前向通道注销 URLhttps://localhost:5001/signout-oidc
  • 出于开发目的,创建自签名证书。 请参阅添加凭据,以上传证书并记录证书指纹不要对生产应用使用自签名证书。 使用受信任的证书颁发机构。

创建 ASP.NET 核心项目

在本部分中,将在 Visual Studio Code 中创建 ASP.NET Core 项目。

  1. 打开 Visual Studio Code,选择“文件”“打开文件夹...”。导航到要在其中创建项目的位置并选择该位置。

  2. 通过选择“终端”>“新终端”打开一个新的终端。

  3. 输入以下命令以创建一个模型视图控制器(MVC)ASP.NET Core 项目。

    dotnet new mvc -n identity-client-web-app
    

安装标识包

此应用程序使用 Microsoft.Identity.Web,并且必须安装相关的 NuGet 包。

使用以下代码片段更改为新的 identity-client-web-app 文件夹并安装相关的 NuGet 包:

dotnet add package Microsoft.Identity.Web.UI

配置用于身份验证的应用程序

应用程序设置中记录的值用于配置应用程序进行身份验证。 appsettings.json 为配置文件,用于存储运行时使用的应用程序设置。

更新配置文件

在 IDE 中,打开 appsettings.json,并将文件内容替换为以下代码片段。 将引号中的文本替换为前面记录的值。

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "Enter_the_Tenant_Id_Here",
    "ClientId": "Enter_the_Application_Id_Here",
    "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": "*"
  }
  • Instance - 身份验证终结点。 在“国家云”查看可用的不同终结点。
  • TenantId - 应用程序注册所在租户的标识符。 将引号中的文本替换为注册应用程序的概述页面中先前记录的“目录(租户) ID”值。
  • ClientId - 应用程序的标识符,也称为客户端。 将引号中的文本替换为先前从注册应用程序的概述页中记录的“应用程序(客户端) ID”值。
  • ClientCertificates - 自签名证书用于应用程序中的身份验证。 将 CertificateThumbprint 的文本替换为先前保存的证书拇指指纹。 不要对生产应用使用自签名证书。
  • CallbackPath - 帮助服务器将响应重定向到适当应用程序的标识符。
  • DownstreamApi - 定义用于访问 Microsoft Graph 的终结点的标识符。 应用程序 URI 与指定的范围结合成一个整体。 若要定义归组织所有的应用程序的配置,Scopes 属性的值略有不同。

更新重定向 URI

根据 先决条件,已将重定向 URI 设置为 https://localhost:5001/signin-oidc。 这需要在应用程序启动设置中更新。 可以使用在本地应用程序设置期间创建的重定向 URI 或任何其他可用的端口号,前提是它与应用程序注册中的重定向 URI 匹配。

  1. 在“属性”文件夹中,打开 launchSettings.json 文件。

  2. 查找 https 对象,并使用正确的端口号更新 applicationURI 的值,在本例中 5001。 该行应类似于以下代码片段:

    "applicationUrl": "https://localhost:5001;http://localhost:{port}",
    

后续步骤