完整的细节在这里。继续执行后续步骤。
基本上,您需要:
在 API 项目中包含 Microsoft.Identity.Web 和 Microsoft.Identity.Web.MicrosoftGraph NuGet 包。
在 Azure 应用注册中设置客户端密码或证书。将其包含在您的 appsettings.json 文件中:
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "{YOUR-DOMAIN-NAME-FROM-APP-REGISTRATION}",
"TenantId": "{YOUR-TENANT-ID-FROM-APP-REGISTRATION}",
"ClientId": "{YOUR-CLIENT-ID-FROM-APP-REGISTRATION}",
"Scopes": "{YOUR-API-ACCESS-SCOPE-FROM-APP-REGISTRATION}",
"CallbackPath": "/signin-oidc",
"ClientSecret": "{YOUR-CLIENT-SECRET-FROM-APP-REGISTRATION}"
}
在 appsettings.json 文件中包含以下部分:
"Graph": {
"BaseUrl": "https://graph.microsoft.com/v1.0",
"Scopes": "User.Read"
}
在您的 Project.cs 文件或 Startup.cs 文件中包含以下代码(取决于您使用的 .Net 版本):
启动.cs:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(Configuration, Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddMicrosoftGraph(Configuration.GetSection("Graph"))
.AddInMemoryTokenCaches();
项目.cs:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddMicrosoftGraph(builder.Configuration.GetSection("Graph"))
.AddInMemoryTokenCaches();
从那里,您只需将 GraphServiceClient 注入您的控制器或页面构造函数。上面的链接提供了在 ASP.NET API 中实现的代码。我在 Blazor Webassembly 托管应用程序中使用此方法,因此我的实现需求与说明略有不同,但它按应有的方式运行/工作。