快速入门:从 ASP.NET Core Web 应用登录用户并调用 Microsoft 图形 API
在本快速入门中,你将使用示例 ASP.NET Core Web 应用通过 授权代码流 登录用户,并调用 Microsoft 图形 API。 此示例使用适用于 .NET 的 Microsoft 身份验证库和 Microsoft标识 Web 来处理身份验证。
先决条件
- 具有活动订阅的 Azure 帐户。 如果还没有帐户,免费创建帐户。
- .NET 8.0 SDK 的最低要求
- Visual Studio Code
注册应用程序和记录标识符
若要完成注册,请向应用程序提供一个名称并指定支持的帐户类型。 注册后,应用程序 “概述” 窗格会显示应用程序源代码中所需的标识符。
如果您有权访问多个租户,请使用顶部菜单中的 设置 图标
切换到您希望在 目录 + 订阅 菜单中注册应用程序的租户。
浏览至“标识”>“应用程序”>“应用注册”,然后选择“新建注册”。
输入应用程序名称,例如 identity-client-web-app。
对于“支持的帐户类型”设置,请选择“仅限此组织目录中的帐户”。 要了解不同帐户类型的信息,请选择“帮我选择”选项。
选择“注册”。
注册完成后,将显示应用程序的 概述 窗格。 记录 目录(租户)ID 和 应用程序(客户端)ID 用于应用程序源代码。
注意
可以通过参照修改应用程序支持的帐户来更改支持的帐户类型。
添加平台重定向 URI
若要将应用类型指定到应用注册,请执行以下步骤:
- 在 管理下,选择 身份验证。
- 在 平台配置 页上,选择 添加平台,然后选择“Web”选项。
- 对于“重定向 URI”,请输入
https://localhost:5001/signin-oidc
。 - 在“前通道注销 URL”下,输入
https://localhost:5001/signout-callback-oidc
来退出登录。 - 选择“配置”以保存更改。
克隆或下载示例应用程序
若要获取示例应用程序,可以从 GitHub 克隆它,也可以将其下载为 .zip 文件。
若要克隆示例,请打开命令提示符并导航到要创建项目的位置,并输入以下命令:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
下载 .zip 文件。 将其解压缩到名称长度少于 260 个字符的文件路径。
创建和上传自签名证书
若要保护应用程序,请将证书添加到应用程序。 本部分介绍如何创建自签名证书并将其上传到 Microsoft Entra 管理中心的应用程序注册。
注意
仅应在开发中使用自签名证书。 在生产环境中,应使用来自受信任证书颁发机构的证书。
使用终端,使用以下命令导航到项目目录中创建自签名证书。
cd ms-identity-docs-code-dotnet\web-app-aspnet\ dotnet dev-certs https -ep ./certificate.crt --trust
返回到Microsoft Entra 管理中心,在“管理”下,选择 证书 & 机密>上传证书。
选择 证书(0) 选项卡,然后选择 上传证书。
此时会显示“上传证书”窗格。 使用图标导航到在上一步中创建的证书文件,然后选择打开。
输入证书的说明,例如 aspnet-web-app证书,然后选择 添加。
记录 指纹 值,以便在下一步中使用。
配置项目
在 IDE 中,打开包含示例的项目文件夹,ms-identity-docs-code-dotnet\web-app-aspnet。
打开 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
的文本替换为先前保存的证书拇指指纹。
运行应用程序并登录
在项目目录中,使用终端输入以下命令;
dotnet run
复制终端中显示的
https
URL,例如https://localhost:5001
,并将其粘贴到浏览器中。 建议使用专用或隐身浏览器会话。按照步骤操作,并输入必要的详细信息,以使用 Microsoft 帐户登录。 系统会要求你提供电子邮件地址,以便可以向你发送一次性密码。 出现提示时输入代码。
应用程序请求权限,以便继续访问您已授权的数据,并且能够登录您的账户并读取您的个人资料。 选择 接受。
将显示以下屏幕截图,指示已登录到应用程序,并从 Microsoft Graph API 访问配置文件详细信息。
从应用程序注销
- 在页面右上角找到 注销 链接,然后选择它。
- 系统会提示你选择要从中注销的帐户。 选择用于登录的帐户。
- 此时会显示一条消息,指示你已注销。现在可以关闭浏览器窗口。
相关内容
- 通过系列 教程构建此 ASP.NET Web 应用,了解如何将应用程序注册到Microsoft标识平台。
- 快速入门:使用Microsoft标识平台保护 ASP.NET 核心 Web API。
- 快速入门:将 ASP.NET Web 应用部署到 Azure 应用服务