在本快速入门中,你将使用示例守护程序应用程序来获取访问令牌,并使用 Microsoft身份验证库(MSAL)调用受保护的 Web API。
员工租户配置适用于员工、内部应用和其他组织资源。
在本快速入门中使用的示例应用将获取访问令牌来调用 Microsoft 图形 API。
- 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请创建一个帐户。
- Azure 帐户必须拥有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
- 应用程序管理员
- 应用程序开发人员
- 云应用程序管理员
- 工作人员租户。 可以使用默认目录或 设置新租户。
- 在 Microsoft Entra 管理中心注册一个新应用,并配置为仅适用于此组织目录中的帐户。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
- 应用程序(客户端)ID
- 目录(租户)ID
- 将客户端密码添加到应用注册。 不要 在生产应用中使用客户端机密。 请改用证书或联合凭据。 有关详细信息,请参阅 向应用程序添加凭据。
若要让守护程序应用访问 Microsoft Graph API 中的数据,请向其授予所需的权限。 守护程序应用需要应用程序类型权限。 用户无法与守护程序应用程序交互,因此租户管理员必须同意这些权限。 使用以下步骤授予和同意权限:
若要获取示例应用程序,可以从 GitHub 克隆它或将其下载为 .zip 文件。
- 若要克隆示例,请打开命令提示符并导航到要创建项目的位置,然后输入以下命令:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
- 下载 .zip 文件。 将其解压缩到名称长度少于 260 个字符的文件路径。
若要在客户端守护程序应用示例中使用应用注册详细信息,请使用以下步骤:
打开控制台窗口,然后导航到 ms-identity-docs-code-dotnet/console-daemon 目录:
cd ms-identity-docs-code-dotnet/console-daemon
打开 Program.cs ,并将文件内容替换为以下代码片段;
// Full directory URL, in the form of https://login.partner.microsoftonline.cn/<tenant_id> Authority = " https://login.partner.microsoftonline.cn/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_obtained_from_the_Microsoft_Entra_admin_center 替换为先前记录下来的 目录(租户)ID 值。 -
ClientId
- 应用程序的标识符,也称为客户端。 将引号中的文本替换为先前在注册应用程序的概述页中记录的Application (client) ID
值。 -
ClientSecret
- 在 Microsoft Entra 管理中心为应用程序创建的客户端密码。 输入客户端密码 的值 。 -
ClientObjectId
- 客户端应用程序的对象 ID。 用您之前从已注册应用程序概述页中记录的Object ID
值替换引号中的文本。
-
已配置示例应用。 可以继续运行并测试它。
在控制台窗口中,运行以下命令以生成并运行应用程序:
dotnet run
应用程序成功运行后,它会显示类似于以下代码片段的响应(为简洁起见缩短):
{
"@odata.context": "https://microsoftgraph.chinacloudapi.cn/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,
...
}
守护程序应用程序可以代表自身(而不是用户)获取一个令牌。 用户无法与守护程序应用程序交互,因为它需要自己的标识。 这种类型的应用程序通过使用其应用程序标识来请求访问令牌,方法是显示其应用程序 ID、凭据(机密或证书)和应用程序 ID URI。 守护程序应用程序使用标准的 OAuth 2.0 客户端凭据授予流 来获取访问令牌。
应用从Microsoft标识平台获取访问令牌。 访问令牌的使用范围限定于 Microsoft Graph API。 然后,应用使用访问令牌从 Microsoft Graph API 请求自己的应用程序注册详细信息。 只要访问令牌具有正确的权限,应用就可以从 Microsoft 图形 API 请求任何资源。
此示例演示无人参与的作业或 Windows 服务如何使用应用程序标识而不是用户的标识运行。